Necesito realizar una macro donde haga una búsqueda con vloopkup pero en otro libro

Hola que tal:

Quiero realizar una macro donde en la columna i, tengo datos que debo buscar en el libro2, hoja 1 desde la celda a1 hasta a13.

lo intenté con el siguiente código pero me marca error al buscar el directorio de libro 2

Sub buscar()

Range("j6").Select

ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],[CONCEPTOS.xlsx]Hoja1!R1C1:R13C2,2,)"

End sub

1 respuesta

Respuesta
1

No le falta un 0 al final de tú fórmula

Así:

=VLOOKUP(RC[-1],[Libro2]Hoja1!R1C1:R13C2,2,0)

también puedes usar el código en VBa: Por ejemplo:

set h2 = workbooks("libro2).sheets("Hoja1")

res = Application.VLookup(dato, h2.Range("A1:B13"), 2, False)
If IsError(res) = True Then
' No lo encontró
Else
Range("K6") = res
End If

Saludos. Dam
Si es lo que necesitas.

¿Debo tener el libro abierto para ejecutar la búsqueda? Es que sigue sin reconocerme el libro de donde debe buscar los datos.

SI, tienes que tener los 2 libros abiertos

Hola de nuevo Dam mi código quedó así, pero no me ejecuta la búsqueda

Sub Macro2()

Set h2 = Workbooks("CONCEPTOS.xlsx").Sheets("Hoja1")

Do While Not IsEmpty(ActiveCell)
res = Application.VLookup(dato, h2.Range("A1:B13"), 2, False)

If IsError(res) = True Then

' No lo encontró

Else

Range("m6") = res

End If

Loop

End Sub

Muchas gracias de antemano.

Aaaahhh, pero dato, es un ejemplo que yo puse, ahí tienes que poner el dato a buscar, supongo que es el valor de una celda

Podría ser así

res = Application.VLookup(range("J6"), h2.Range("A1:B13"), 2, False)
If IsError(res) = True Then
' No lo encontró
Else
Range("m6") = res
End If

Pero si no me explicas qué celda vas a buscar en qué otras celdas y cuál celda te vas a traer de resultado y en qué celda vas a poner el resultado, lo único que puedo darte son ejemplos y tú tienes que cambiarlos por los datos reales.

Además si tienes un loop, pero no cambias de celda se va a quedar en el ciclo sin fin. Te recomiendo que utilices un For.

Y si el resultado del loop todo apunta a Range("M6"), ahí solamente se quedará el último resultado de res.

Prueba y me comentas

Saludos. Dam

Hola de nuevo Dam a ver vamos paso a paso.

Voy a buscar los valores empezando desde la celda L6, el resultado se debe poner en M6 y debe buscarlos en el libro Conceptos (donde el rango para buscar es a1:b13), mi libro actual se llama Formatos.

Como son datos variables le puse el for que me comentaste para que avance por las celdas, pero creo que no quedó bien porque se queda en la primera celda

Set h2 = Workbooks("CONCEPTOS.xlsx").Sheets("Hoja1")

ufila = ActiveCell.SpecialCells(xlLastCell).Row

For i = 2 To ufila

res = Application.VLookup(Range("l6"), h2.Range("A1:B13"), 2, False)

If IsError(res) = True Then

'MsgBox ("No se encontró el dato")

Else

ActiveCell = res

ActiveCell.Offset(1, 0).Select

End If

Next i

End Sub

Gracias por tu paciencia =)

Esta sería la macro

Sub busca()
'por.dam
Set h2 = Workbooks("CONCEPTOS.xlsx").Sheets("Hoja1")
For i = 6 To Range("L" & Rows.Count).End(xlUp).Row
    res = Application.VLookup(Cells(i, "L"), h2.Range("A1:B13"), 2, False)
    If IsError(res) = True Then
        'MsgBox ("No se encontró el dato")
    Else
        Cells(i, "M") = res
    End If
Next
End Sub

Saludos.Dam
Si es lo que necesitas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas