Hacer referencia a otra hoja en VLookup usando VBA
VBA es la abreviatura de Visual Basic para aplicaciones. Es un lenguaje de programación para todas las aplicaciones de Microsoft Office, como Excel, Word y PowerPoint.
El uso de VBA permite a los usuarios optimizar su tiempo en la aplicación de Microsoft Office mediante la escritura de códigos, conocidos como Macros
. De esta forma, el usuario puede ejecutar la Macro
de una tarea para automatizarla en lugar de realizar manualmente las mismas acciones repetidamente, ahorrando tiempo.
VBA proporciona a los desarrolladores una variedad de funciones y características diferentes. En este artículo, aprenderemos sobre la función VLookup
y cómo se usa, especialmente cuando queremos hacer referencia a otra hoja.
¿Qué es la función VLookup
?
La función VLookup
se usa en Excel cuando queremos encontrar el valor de una fila en particular en una tabla o rango. Esto es extremadamente útil cuando se trabaja con una hoja de cálculo grande; buscar manualmente los valores correspondientes puede dar lugar a errores humanos.
La sintaxis de la función VLookup
es la siguiente:
VLOOKUP(lookup_value, Sheet!range, col_index_num, [range_lookup])
Parámetros:
La función VLookup
toma cuatro parámetros, como se muestra en la sintaxis anterior. Estos se explican a continuación.
-
lookup_value
: esta es la celda en la que desea encontrar el valor en la fila. -
Sheet!range
: aquí define el rango de celdas donde se encuentran el valor de búsqueda y el valor de retorno. Una regla general es que el valor de búsqueda siempre debe estar en la primera columna del rango especificado, o la funciónVLookup
no funcionaría correctamente. -
col_index_num
- Como regla general, el número de columna especificado aquí debe estar presente en el rango dado anteriormente. Las columnas se cuentan desde 1.Por ejemplo, si ha especificado
C3:F10
como rango, entoncesC
es la columna número 1,D
es la columna número 2,E
es la columna número 3, y así sucesivamente. -
range_lookup
: el último parámetro es opcional y le permite especificar si desea un valor de retorno exacto o aproximado. Para un valor exacto, especifiqueFALSO
o0
; para un valor aproximado se escribeVERDADERO
o1
.Si no se especifica este parámetro, el valor por defecto es
VERDADERO
, y se devuelve un resultado aproximado.
La sintaxis y los parámetros explicados anteriormente se pueden ilustrar mejor a través de un ejemplo. Supongamos que tenemos la siguiente hoja de Excel.
Supongamos que queremos buscar el nombre del empleado que tiene ID 1004
. Usamos la función VLookup
para hacer esto usando el siguiente código.
Sub example()
On Error Resume Next
Range("C8") = Application.WorksheetFunction.VLookup(Range("A5"), Range("A2:D6"), 3, False)
End Sub
Después de ejecutar este código en VBA, obtenemos el nombre correspondiente para ID 1004
devuelto en la celda C8
.
Nota: La línea
On Error Resume Next
evita que VBA arrojeError 1004
si no se encuentra el valor correspondiente al reanudar el código de la siguiente línea.
Ahora que ha aprendido acerca de la función VLookup
en VBA, permítanos explicarle cómo podemos usarla para hacer referencia a celdas de otra hoja.
Use VLookup
haciendo referencia a otra hoja en VBA
Supongamos que queremos buscar un valor para una celda correspondiente, pero el rango donde reside el valor está en otra hoja.
¿Cómo hacemos referencia a otra hoja en tal caso? Aprendamos eso a través de un ejemplo.
Agregando al mismo ejemplo anterior, supongamos que tenemos otra hoja con solo las identificaciones de los empleados y su información de contacto, como se muestra a continuación.
Como podemos ver aquí, la última celda de la columna Contacto
está vacía, lo que significa que no tenemos la información de contacto del empleado que tiene ID 1005
.
La tarea ahora es buscar el valor de Contacto
de Hoja1
correspondiente al ID 1005
y escribirlo en la celda B6
en Hoja2
contra el ID 1005
según sea necesario. Para hacer esto, podemos usar fácilmente la función VLookup
con algunos cambios.
El principal ajuste que tendremos que hacer en los parámetros de la función VLookup
es especificar la hoja a cuyas celdas nos referimos en el rango; de lo contrario, habrá ambigüedad que podría producir resultados erróneos.
Para este propósito, una solución es definir los nombres de las hojas como variables de Hoja de trabajo
y usarlas para referirse a las celdas apropiadas. El código VBA para esto es el siguiente:
Sub example2()
Dim ws1 As Worksheet, ws2 As Worksheet
Set ws1 = Worksheets("Sheet1")
Set ws2 = Worksheets("Sheet2")
On Error Resume Next
ws2.Range("B6") = Application.WorksheetFunction.VLookup(ws2.Range("A6"), ws1.Range("A2:D6"), 4, False)
End Sub
Aquí podemos ver que cada vez que se menciona un rango, especificamos a qué hoja pertenece para evitar ambigüedades. Luego de ejecutar este código VBA, el estado de Sheet2
será el siguiente, indicando que nuestro código se está ejecutando correctamente.
Sin embargo, si no desea declarar variables separadas, puede hacer referencia directamente al nombre de la hoja como Hoja de trabajo. El siguiente código funciona para esto y genera el mismo resultado.
Sub example()
On Error Resume Next
Worksheets("Sheet2").Range("B6") = Application.WorksheetFunction.VLookup(Worksheets("Sheet2").Range("A6"), Worksheets("Sheet1").Range("A2:D6"), 4, False)
End Sub
Conclusión
Esto resume nuestra discusión sobre la función VLookup
en VBA, un lenguaje de programación útil que ahorra un tiempo valioso para los usuarios de Microsoft Office.
Esperamos que haya aprendido a usar la función VLookup
en VBA para hacer referencia a celdas en otras hojas además de la activa.
Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!
GitHub