VLookup en VBA Excel

Vlookup es una función de hoja de trabajo en Excel, pero también se puede usar en VBA, la funcionalidad de Vlookup es similar a la funcionalidad en VBA y en la hoja de trabajo, ya que es una función de hoja de trabajo, el método para usar Vlookup en VBA es a través de la aplicación. método y los argumentos siguen siendo los mismos.

Función VLOOKUP en Excel VBA

La función BUSCARV en Excel se utiliza para buscar un valor en una matriz y devolver su valor correspondiente de otra columna. El valor a buscar debe estar presente en la primera columna. También es necesario mencionar si buscar una coincidencia exacta o aproximada. La función de hoja de trabajo BUSCARV se puede utilizar en la codificación VBA. La función no está integrada en VBA y, por lo tanto, solo puede llamar usando la hoja de trabajo.

La función BUSCARV en Excel tiene la siguiente sintaxis:

En el cual, lookup_value es el valor a buscar, table_arrray es la tabla, col_index_num es el número de columna del valor de retorno, range_lookup significa si la coincidencia es exacta o aproximada. range_lookup puede ser TRUE / FALSE o 0/1.

En el código VBA, la función VLOOKUP se puede utilizar como:

Application.WorksheetFunction.vlookup (lookup_value, table_array, col_index_num, range_lookup)

¿Cómo usar VLookup en Excel VBA?

A continuación, se muestran algunos ejemplos de código VLookup en Excel VBA.

Puede descargar esta plantilla VLookup en Excel VBA aquí - VLookup en Excel VBA Template

Código de VLookup en Excel VBA Ejemplo # 1

Veamos cómo podemos llamar a la función de hoja de trabajo BUSCARV en Excel VBA.

Suponga que tiene un dato de la identificación de los estudiantes, el nombre y las notas medias que han obtenido.

Ahora, desea buscar las calificaciones obtenidas por un estudiante, con ID 11004.

Para buscar el valor, siga los siguientes pasos:

  • Vaya a la pestaña Desarrollador y haga clic en Visual Basic.

  • Debajo de la ventana de VBA, vaya a Insertar y haga clic en Módulo.

  • Ahora, escriba el código VBA VLOOKUP. Se puede utilizar el siguiente código VBA VLOOKUP.

Sub vlookup1 ()

Dim student_id tan largo

Marcas tenues tan largas

student_id = 11004

Establecer myrange = Range ("B4: D8")

marcas = Application.WorksheetFunction.VLookup (student_id, myrange, 3, False)

End Sub

En primer lugar, defina una identificación de estudiante, que es el valor a buscar. Por lo tanto, definimos,

student_id = 11004

A continuación, definimos el rango en el que existen el valor y el valor de retorno. Dado que nuestros datos están presentes en las celdas B4: D8, definimos un rango-myrange como:

Establecer myrange = Range ("B4: D8")

Finalmente, ingresamos la función VLOOKUP usando la función Worksheet en una variable, marca como:

marcas = Application.WorksheetFunction.VLookup (student_id, myrange, 3, False)

Para imprimir las marcas en un cuadro de mensaje, usemos el siguiente comando:

MsgBox "Estudiante con identificación:" & student_id & "obtenido" & marcas & "marcas"

Regresará:

Alumno con DNI: 11004 obtuvo 85 puntos.

Ahora, haga clic en el botón Ejecutar.

Notará que aparecerá un cuadro de mensaje en la hoja de Excel.

Código de VLookup en Excel VBA Ejemplo # 2

Suponga que tiene los datos de los nombres de los empleados y su salario. Estos datos se proporcionan en las columnas B y C. Ahora, debe escribir un código VBA VLOOKUP de manera que, dado el nombre del empleado en una celda, F4, el salario del empleado se devolverá en la celda G4.

Escribamos el código VBA VLOOKUP.

  1. Defina el rango en el que están presentes los valores, es decir, las columnas B y C.

Establecer myrange = Range ("B: C")

  1. Defina el nombre del empleado e ingrese el nombre de la celda F4.

Establecer nombre = Rango ("F4")

  1. Defina salario como celda G4.

Establecer salario = Rango ("G4")

  1. Ahora, llame a la función BUSCARV usando WorksheetFunction en VBA e introdúzcala en salario.Value. Esto devolverá el valor (salida de la función Vlookup) en la celda G4. Se puede utilizar la siguiente sintaxis:

salario.Value = Application.WorksheetFunction.VLookup (nombre, myrange, 2, False)

  1. Ahora, ejecute el módulo. La celda G4 contendrá el salario del empleado después de ejecutar el código VBA VLOOKUP.

Suponga que cambia el valor de la celda F4 a "David" en la hoja de trabajo y vuelve a ejecutar el código, devolverá el salario de David.

Código de VLookup en Excel VBA Ejemplo # 3

Suponga que tiene los datos del empleado de su empresa, teniendo su DNI, nombres, Departamento y salario. Al usar Vlookup en VBA, desea obtener los detalles salariales de un empleado usando su nombre y departamento.

Dado que la función vlookup en Excel busca lookup_value en una sola columna, que es la primera columna de table_array, es necesario que primero cree una columna que contenga el "Nombre" y el "Departamento" de cada empleado.

En VBA, insertemos los valores "Nombre" y "Departamento" en la columna B de la hoja de trabajo.

Para hacer esto, vaya a la pestaña Desarrollador y haga clic en Visual Basic. Luego vaya a insertar y haga clic en Módulo para iniciar un nuevo módulo.

Escribamos ahora código, de modo que la columna B contenga los valores de la columna D (nombre) y la columna E.

La sintaxis se da como:

En primer lugar, utilice un bucle 'for' de i = 4, ya que los valores comienzan en la cuarta fila en este caso. El ciclo continuará hasta el final de la última fila de la columna C. Entonces, la variable i puede usarse como un número de fila dentro del ciclo 'for'.

Luego ingrese el valor para asignar a la celda (número_fila, columna B), que se puede dar como celdas (i, "B"). Valor, como celda (número_fila, columna D) y "_" & celda (número_fila, columna E ).

Suponga que desea asignar la celda B5 = D5 & “_” & E5, simplemente puede usar el código como:

Celdas (5, "B"). Valor = Celdas (5, "D"). Valor & "_" & Celdas (5, "E"). Valor

Ahora, busque el valor de búsqueda en la matriz B5: E24, primero debe ingresar el valor de búsqueda. Tomemos el valor (Nombre y Departamento) del usuario. Para hacer esto,

  1. defina tres variables, nombre, departamento y lookup_val como una cadena.
  2. Toma la entrada de nombre del usuario. Usa el código:

name = InputBox ("Ingrese el nombre del empleado")

El contenido del cuadro de entrada "Ingrese el .." se mostrará en el cuadro de aviso cuando ejecute el código. La cadena ingresada en el indicador se asignará a la variable de nombre.

  1. Toma el departamento del usuario. Se puede hacer de manera similar a la anterior.

departamento = InputBox ("Ingrese el departamento del empleado")

  1. Asigne el nombre y el departamento con "_" como separador a la variable lookup_val usando la siguiente sintaxis:

lookup_val = nombre & "_" & departamento

  1. Escriba la sintaxis de vlookup para buscar lookup_val en el rango B5: E24 devuélvalo en un salario variable.

Inicialice el salario variable:

Salario débil siempre que

Utilice la función Vlookup para encontrar el lookup_val. El table_array se puede dar como Rango (“B: F”) y el salario está presente en la quinta columna. Por tanto, se puede utilizar la siguiente sintaxis:

salario = Application.WorksheetFunction.VLookup (lookup_val, Range ("B: F"), 5, False)

  1. Para imprimir el salario en un cuadro de mensaje, use la sintaxis:

MsgBox (El salario del empleado es ”y salario)

Ahora, ejecute el código. Aparecerá un cuadro de aviso en la hoja de trabajo en el que puede ingresar el nombre. Después de ingresar el nombre (Diga Sashi) y haga clic en Aceptar.

Se abrirá otra casilla en la que podrás ingresar al departamento. Después de ingresar al departamento, diga IT.

Imprimirá el salario del empleado.

Si Vlookup puede encontrar a cualquier empleado con el nombre y el departamento, dará un error. Suponga que da el nombre "Vishnu" y el departamento "IT", devolverá el error de tiempo de ejecución '1004'.

Para solucionar este problema, puede especificar en el código que, en este tipo de error, imprima "Valor no encontrado" en su lugar. Para hacer esto,

  1. Antes de usar la sintaxis de vlookup, use el siguiente código:

En mensaje de error Ir a

Cheque:

El código final (de Check :) será monitoreado, y si recibe algún error, irá a la declaración "message"

  1. Al final del código (Before End Sub), especifique que si el número de error es 1004, imprima en el cuadro de mensaje "Datos del empleado no presentes". Esto se puede hacer usando la sintaxis:

Mensaje:

Si Err.Number = 1004 Entonces

MsgBox ("Los datos del empleado no están presentes")

Terminara si

Módulo 1:

Sub vlookup3 ()

Para i = 4 Para celdas (Rows.Count, "C"). End (xlUp) .Row

Celdas (i, "B"). Valor = Celdas (i, "D"). Valor & "_" & Celdas (i, "E"). Valor

Siguiente nombre de iDim como cadena

Departamento tenue como cadena

Dim lookup_val como cadena

Dim salario As Longname = InputBox ("Ingrese el nombre del empleado")

departamento = InputBox ("Ingrese el departamento del empleado")

lookup_val = name & "_" & departmentOn Error Ir a mensaje

cheque:

salario = Application.WorksheetFunction.VLookup (lookup_val, Range ("B: F"), 5, False)

MsgBox ("El salario del empleado es" & salario) Mensaje:

Si Err.Number = 1004 Entonces

MsgBox ("Los datos del empleado no están presentes")

End IfEnd Sub

Cosas para recordar sobre VLookup en Excel VBA

  • La función Vlookup se puede llamar en Excel VBA utilizando WorksheetFunction.
  • La sintaxis de la función vlookup sigue siendo la misma en Excel VBA.
  • Cuando el código de VBA vlookup no puede encontrar el valor de búsqueda, dará el error 1004.
  • El error en la función vlookup se puede gestionar mediante una instrucción goto si devuelve un error.