Aplicar BuscarV En Una Macro

Estoy intentando realizar una macro que me permita con base a un ID hacer un buscarv en otra base de datos y poder traer la información que necesito.

Esta es la base 1 donde en la primera columna en amarillo tengo el ID y deseo asignar la información de la ultima columna teniendo como referencia la información de la base dos que también tiene ID.

Necesito realizar un buscarv en VBA dado que al momento de ejecutar un botón el me realice el cruce y me le asigne el nombre de la entidad de salud de la base 2 a la base uno utilizando el ID; Solamente si es posible " que los datos que coincidan el les coloque uno y a los que no les coloque 0" en la ultima columna de la base 1 que esta en amarillo.

Quien requiera la base de datos con gusto se la puedo compartir.

Muchas gracias por la ayuda que me puedan brindar realmente se necesita para una optimización en mi lugar de trabajo.

1 respuesta

Respuesta
2

Te anexo la macro considerando lo siguiente:

- Los códigos en ambas hojas están en la columna A

- La columna "I" en la hoja1 es la que se tiene que actualizar

- Los registros en la hoja1 empiezan en la fila 2

- Cambia en la macro "Hoja1" y "Hoja2" por los nombres de tus hojas



Sub Buscar_Id()
'Por Dante Amor
    Set h1 = Sheets("Hoja1")    'hoja base1
    Set h2 = Sheets("Hoja2")    'hoja base2
    '
    For i = 2 To h1.Range("A" & Rows.Count).End(xlUp).Row
        Set b = h2.Columns("A").Find(h1.Cells(i, "A"), lookat:=xlWhole)
        If Not b Is Nothing Then
            h1.Cells(i, "I").Value = 1
        Else
            h1.Cells(i, "I").Value = 0
        End If
    Next
    MsgBox "Fin"
End Sub

.

.

Buenas noches Dante, muchas gracias por tu colaboración ha sido muy útil.. solamente tengo un inconveniente. He plasmado tu código en la base de datos que tengo de la siguiente manera y al ejecutarla me le asigna a todos el 1 como si coincidieran todos los clientes pero realizando el buscarv de manera manual hay varios clientes que no están en la Base2 por lo que estos deberían aparecer en 0 pero están quedando con uno.

El código lo tengo de la siguiente manera:

Private Sub Busc_Pac_Click()


Set h1 = Sheets("Total") 'hoja base1
Set h2 = Sheets("BASE DE DATOS") 'hoja base2
'
For i = 4 To h1.Range("B" & Rows.Count).End(xlUp).Row "Declare i=4" dado que es en el 4 donde arranca la informaciòn las tres primeras filas son encabezados; declare B porque es la columna donde esta el numero de ID en mi base de datos."


Set b = h2.Columns("A").Find(h1.Cells(i, "AV"), lookat:=xlWhole) " En h.2columns("defino A porque es la columna donde esta el ID en la base dos; defino ("i, "AV") teniendo en cuenta que i corresponde al for y "AV" la columna donde voy almacenar la informaciòn es decir el resultado del buscarV;
If Not b Is Nothing Then
h1.Cells(i, "AV").Value = 1 "Aqui aparece AV porque es la columna donde relacionaria el resultado como 1 en caso de coincidir"
Else
h1.Cells(i, "AV").Value = 0 "Aqui aparece AV porque es la columna donde relacionaria el resultado como 0 en caso de NO coincidir"
End If
Next
MsgBox "Fin"

End Sub

Agradeceria por favor tu ayudaria del porque al correr la macro como me lo sugieres todo me aparece en 1.

Muchas gracias, saludos.

En esta línea

Set b = h2.Columns("A").Find(h1.Cells(i, "AV"), lookat:=xlWhole)

Debe ser 

Set b = h2.Columns("A").Find(h1.Cells(i, "B"), lookat:=xlWhole)

Significa, busca en la hoja2 en la columna A el dato ID que está en h1. Cells(i, "B") (hoja1 columna B)


Realiza ese cambio y me comentas.

Si te funciona, no olvides valorar la respuesta.

Buena tarde,

Dante para notificarte y agradecerte por el codigo ya me funciono correctamente y los datos coinciden haciendolo de esta manera como de forma manual; ahora tengo una inquietud: El codigo yo lo entiendo en que el hace una coincidencia entre el ID de la columna A y la columna B de las correspondientes bases.

Pero el codigo no me esta recorriendo la base para traerme la información que necesito es decir, como lo mencione en la consulta y en la imagen con el ID de una base voy a consultar otra base con el mismo ID pero para traer la información de otra columna como por ejemplo en la consulta yo realizaba la busqueda en la base 2 para traer el codigo de la entidad de salud es decir la 2 columna de la base2.

Ya que el codigo que me compartiste el solamente esta encontrando las coincidencias exactas entre las dos columnas que comparamos en este caso el ID pero me esta trayendo el mismo ID a la base que ya la tengo y la idea es traer la información de la base 2 que me esta haciendo falta por medio del ID que hay entre las dos bases; En este caso seria la entidad de salud; dado que despues de esto pues se piensa crear un case o un if con los resultados del cruce segun el tipo de entidad.

Agradezco mucho tu ayuda, esta seria la unica parte pendiente de la consulta para poderla valorar de manera excelente...

Muchas gracias y quedo atento.

No estoy entendiendo muy bien qué necesitas.

Explícame nuevamente con imágenes qué necesitas.

Procura que en las imágenes se vea el nombre de la hoja, las columnas y las filas de excel.

Entonces, con la ayuda de las imágenes, me dices:

- ¿Qué dato quieres buscar?

- ¿En dónde lo quieres buscar?

- Qué dato o datos quieres obtener como resultado de la búsqueda

- Y exactamente en dónde quieres poner los resultados.

Todo explicado don las imágenes y describiendo un ejemplo basado en las imágenes.

Buena tarde Dante,

La idea seria la siguiente:

Base1: Esta es la base uno donde tengo un ID del cliente en la columna A y deseo conocer que Eps o Ips tiene el.

Base2: Tengo una base dos donde tengo dos columnas, la primera con el ID del cliente y la segunda donde esta el nombre de la eps segun el ID del cliente.

La idea es hacer un buscarv utilizando el ID en ambas bases y poder asignar en la columna I de mi base uno el nombre de la eps del cliente; es decir necesito que el codigo me encuentre la coincidencia segun el id y me permita seleccionar la columna 2 de la base 2.

El buscarV normal en el excel seria el siguiente:

=+BUSCARV(A2;BASE2!$A$2:$B$10073;2;FALSO).

Espero haber sido claro para el entendimiento del caso, de ser necesario si quieres te comparto la base de datos.

Muchas gracias, saludos Dante.

Sí está más clara la explicación, pero sigo sin entender por qué en la macro que modificaste pusiste la columna "AV"

Otro detalle en tus imágenes es que no se ve el número de fila y tampoco se ve el nombre de la hoja, podrías abarcar más información en la imagen, están muy recortadas.

También en tu petición original pusiste esto:

Solamente si es posible " que los datos que coincidan el les coloque uno y a los que no les coloque 0"

Y en tus imágenes no veo ni los 1 ni los 0.

Sigo confundido.

Si es muy complicado explicarlo con las imágenes, entonces envíame tu archivo y en la hoja, en las celdas agrega comentarios explicando con detalle lo que necesitas.

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “Camilo Alvarez

Cordial saludo Dante,

Acabo de enviar la base de datos y las explicaciones solicitadas para un mayor entendimiento de la necesidad que estoy presentando.

Muchas gracias y quedo atento a cualquier novedad.

Asunto del correo enviado: brayan gutierrez” - Aplicar Buscarv En Macro

Cordial saludo dante,

Quería consultarte si recibiste el correo que te envíe con la base de datos y la explicación que me pediste.

Te envié la respuesta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas