Hacer referencia a otra hoja en VLookup usando VBA

Bilal Shahid 15 febrero 2024
  1. ¿Qué es la función VLookup?
  2. Use VLookup haciendo referencia a otra hoja en VBA
  3. Conclusión
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.

  1. lookup_value: esta es la celda en la que desea encontrar el valor en la fila.

  2. 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ón VLookup no funcionaría correctamente.

  3. 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, entonces C es la columna número 1, D es la columna número 2, E es la columna número 3, y así sucesivamente.

  4. 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, especifique FALSO o 0; para un valor aproximado se escribe VERDADERO o 1.

    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.

Hoja de ejemplo

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.

Salida de ejemplo

Nota: La línea On Error Resume Next evita que VBA arroje Error 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.

Hoja de ejemplo con información de contacto

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.

Hacer referencia a otra hoja en VBA

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

referencia directa

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.

Bilal Shahid avatar Bilal Shahid avatar

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