Como usar macro como la fórmula buscarv en excel.

Necesito utilizar la fórmula buscarv en dos bases pero son más de 200,000 datos los que tengo que buscar y consume muchos recursos y se tarda demasiado, por lo que necesito algún ejemplo en macro para que me busque un dato en otro libro y sea más rápido.

1 respuesta

Respuesta
2

La sintaxis de Buscarv en VBA es así:

    res = Application.VLookup(dato, matriz, col, False)
    If IsError(res) = True Then
        ' No lo encontró
    Else
        mesgbox "Resultado: " & res
    End If

Pero te recomiendo que utilices la función Find, la sintaxis es la siguiente:

Sub BuscarDatos()
'Por.Dante Amor
    Set l1 = ThisWorkbook
    Set h1 = l1.Sheets("Hoja1")
    Set l2 = "libro2.xlsx"      'nombre del otro libro
    Set h2 = l2.Sheets("Hoja1") 'nombre de la hoja del otro libro
    '
    For i = 1 To h1.Range("A" & Rows.Count).End(xlUp).Row
        dato = h1.Cells(i, "A")
        Set b = h2.Columns("A").Find(dato, lookat:=xlWhole)
        If Not b Is Nothing Then
            MsgBox "Dato encontrado"
        End If
    Next
End Sub

Para ayudarte con la macro completa tienes que poner en dónde están tus datos y en dónde los vas a buscar y qué dato es el que necesitas como resultado.

Saludos. Dante Amor

Si es lo que necesitas.

Disculpa ya lo ejecute pero no encuentro la celda en donde me indica el resultado.

El campo que necesito buscar esta en la columna F, y quiero que aparezca el resultado en la columna G.

Muchas Gracias.

Como te comenté necesito que me digas con exactitud qué vas a buscar, en dónde lo vas a buscar y qué esperas de resultado, si puedes hacerlo con imágenes.

En el primer libro que se llama Para buscar (primer imagen) columna F tengo unos números de cuenta y tengo que buscarlos en el libro General  (segunda imagen) columna B. El resultado lo quiero en la columna G del primer libro.

Muchas Gracias. 

Te faltó poner cuál de todos los datos del libro2 es el que se debe tomar para ponerlo en el libro1

Otra cosa, ¿son diferentes libros o diferentes hojas dentro del mismo libro?

En tu ejemplo que pusiste los 2 libros se llaman igual.

Perdón son diferentes hojas dentro del mismo libro.

Te anexo la macro actualizada.

Sub BuscarDatos()
'Por.Dante Amor
    Set l1 = ThisWorkbook
    Set h1 = l1.Sheets("Hoja1")
    Set l2 = "libro2.xlsx"      'nombre del otro libro
    Set h2 = l2.Sheets("Hoja1") 'nombre de la hoja del otro libro
    '
    For i = 2 To h1.Range("F" & Rows.Count).End(xlUp).Row
        dato = h1.Cells(i, "F")
        Set b = h2.Columns("B").Find(dato, lookat:=xlWhole)
        If Not b Is Nothing Then
            'MsgBox "Dato encontrado"
            h1.Cells(i, "G") = h2.Cells(b.Row, "E")
        End If
    Next
End Sub

Cambia "Hoja1" por los nombres de hoja

Cambia "libro2.xlsx" por el nombre del otro libro

Cambia "E" por la letra de la columna que contiene el dato que quieres como resultado.

Saludos. Dante Amor

Macro actualizada

Sub BuscarDatos()
'Por.Dante Amor
    Set l1 = ThisWorkbook
    Set h1 = l1.Sheets("Para buscar")
    Set h2 = l1.Sheets("General") 'nombre de la hoja del otro libro
    '
    For i = 2 To h1.Range("F" & Rows.Count).End(xlUp).Row
        dato = h1.Cells(i, "F")
        Set b = h2.Columns("B").Find(dato, lookat:=xlWhole)
        If Not b Is Nothing Then
            'MsgBox "Dato encontrado"
            h1.Cells(i, "G") = h2.Cells(b.Row, "E")
        End If
    Next
End Sub

Saludos.Dante Amor

Recuerda valorar la respuesta.

Ya valoraste la respuesta. Solamente cambia en la macro la "E" por la columna que necesites

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas