Buscar en otro libro de excel con vlookfind

A ver si podéis echarme una mano. Tengo un libro desde el que doy entradas y salidas de mercancía. Cuando hay una salida, necesito abrir un libro de excel llamado almacén, localizar la mercancía y recuperar la cantidad almacenada hasta ese momento.

Todo esto lo hago desde una macro y, por supuesto, declaro variables, abro el libro y lo desprotejo desde vba.

Resumiendo, necesito saber como definir el rango de búsqueda utilizando vlookup cuando dicho rango está en otro libro que he abierto desde vba.

1 respuesta

Respuesta
1

Te dejo un ejemplo de instrucción para esto:

'estando en el libro principal
Set busco = Workbooks(libro2).Sheets(1).Range("A:A").Find(dato, LookIn:=xlValues, lookat:=xlWhole)
If busco Is Nothing Then
MsgBox "No se encuentra el dato buscado"
Else
'guardo en variable el valor de la col C
mi_valor = busco.Offset(0, 2)
End If

El libro ya estará abierto y su nombre en la variable libro2, sinó directamente hacé mención a su nombre +extensión

Reemplazá el nro de hoja por el nombre que corresponda, lo mismo el rango.

Espero te quede claro, sinó pasame algunas referencias como para ajustar la rutina.

PD) Te invito a visitar la sección Macros de mi sitio como así también la de Manuales.

Hola Elsa: Gracias por tu pronta respuesta.

Ya conocía el código que me has puesto, pero gracias de todos modos. Lo que quería era hacerlo con VLOOKUP y no conseguía que funcionara. Al final era una enorme tontería que te describo por si alguna vez te ocurre, aunque supongo que ya lo conocerás:

Si tienes un rango con, por ejemplo, nombres en la columna A y edades en la columna B y utilizas VLOOKUP para buscar un nombre y que te devuelva la edad, no hay problema, pero si están las edades en la columna A y los nombres en la columna B, y le dices a VLOOKUP que busque en el rango A:B y te devuelva el valor de la primera columna, entonces no es capaz de encontrarlo. La columna de búsqueda debe ser siempre la primera.

Muchas gracias, realizáis una enorme labor

Si claro, porque VLOOKUP o lo que es lo mismo la función BUSCARV (o CONSULTAV) solo devuelve valores a derecha del valor buscado. Para devolver lo que se encuentra a izquierda se utilizan otras funciones.

Pero la idea del SET es apta para todas las situaciones, por eso se utilizan en primer lugar... pero si te gusta usar funciones... bueno, Vlookup para algunos casos está bien.

Creo que el tema entonces está finalizado... no dejes la consulta abierta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas