Vlookup es una función esencial dentro de Excel y se ha convertido en una parte vital del procesamiento de datos. Proporciona algunas de las funciones que normalmente asociaría con una base de datos completa.
Pero, ¿y si quieres automatizar esta función? Sí, eso es posible, especialmente si sabe cómo usar el lenguaje de automatización nativo de Excel, VBA. Así es como puede automatizar la función vlookup en Excel VBA.
La sintaxis de Vlookup
La sintaxis de la función vlookup es bastante simple, pero tiene cuatro aspectos en los que debe concentrarse, incluso mientras la automatiza en Excel VBA.
=buscarv (valor_buscado, matriz_buscada, índice_columna, coincidencia_exacta/coincidencia_parcial)
Los argumentos de la función tienen el siguiente significado:
- valor de búsqueda: Este es el valor principal que desea buscar en la matriz de búsqueda.
- matriz_buscada: Estos son los datos de origen, que lookup_value utilizará como referencia.
- índice_columna: Columna desde la que devolver el valor.
- coincidencia_exacta/coincidencia_parcial: Utilice 0 o 1 para determinar el tipo de coincidencia.
Preparación de datos
Este conjunto de datos tiene dos partes: una tabla de búsqueda y los puntos de datos de destino.
La tabla de búsqueda consta de tres columnas, con datos que completan los campos Subcategoría y Nombre del producto:
La tabla de destino tiene columnas coincidentes, sin subcategoría ni datos de nombre de producto. Tenga en cuenta que los valores en su columna ID de pedido también están presentes en la misma columna en la tabla de búsqueda:
Uso de Vlookup directamente en una hoja de cálculo de Excel
Para llenar las columnas de destino, B y C, puede usar la función vlookup de Excel.
en la celda B2, ingrese la siguiente fórmula:
=BUSCARV($A2, $F$3:$ H$17, 2, 0)
Del mismo modo, en la celda C2, ingresa esta fórmula:
=BUSCARV($A2, $F$3:$ H$17, 3, 0)
Puede arrastrar la fórmula hacia abajo desde la celda B2 hasta el final de la columna, B17. Repita este proceso también para la columna C. Los valores de cada entrada subsiguiente se actualizarán automáticamente en ambas columnas.
Los valores que pasa a la función vlookup son:
- A2: El valor de búsqueda está en esta celda.
- F3: H17: Esto consiste en el rango de búsqueda.
- 2/3: Las columnas de referencia para obtener el valor.
- 0: Indica una coincidencia exacta.
Función Vlookup de Excel VBA
La función vlookup tiene muchas similitudes, ya sea que la esté usando directamente en Excel o a través de VBA. Ya sea que sea un analista de datos que se ocupa de filas de datos o un administrador de inventario que se ocupa de nuevos productos regularmente, puede beneficiarse al usar vlookup.
Cuando se trabaja con un rango de búsqueda dinámico, siempre es mejor automatizar sus fórmulas para evitar aplicar fórmulas repetidamente en Excel. Al automatizar su función Vlookup en VBA, puede realizar cálculos de varias columnas con un solo clic.
1. Realice la configuración requerida
Comience abriendo el editor de codificación (presione Alt+F11 o navegue hasta el Desarrollador tab) en un nuevo libro de Excel y agregue un módulo para comenzar a escribir su código. Dentro del editor de código, agregue las siguientes líneas en la parte superior de la ventana de codificación para crear una subrutina:
Sub vlookup_fn1() End Sub
La subrutina es un contenedor para su código VBA y es fundamental para ejecutarlo correctamente. Una alternativa es crear un formulario de usuario de VBA para que su interfaz de usuario sea más interactiva.
2. Declare sus variables y cree sus rangos de referencia
Primero, debe declarar los tipos de datos variables usando el Oscuro declaración:
Dim i como entero, lastrow como largo
A continuación, cree un última fila variable, para almacenar el valor de la última fila poblada dentro de su rango de búsqueda. La función lastrow utiliza el fin (xldown) función para calcular la referencia de fila final dentro del rango especificado.
En este caso, la variable lastrow almacena el último valor de la fila poblada del rango de búsqueda,17.
últimafila = Hojas("Hoja2").Rango("F3").Fin (xlAbajo).Fila
En el ejemplo anterior, la tabla de destino se extiende desde A2:C17, mientras que la tabla de origen se extiende desde F2:H17. La fórmula vlookup recorrerá cada valor almacenado en la columna A, lo buscará en la tabla de origen y pegará las entradas coincidentes en las columnas B y C.
Sin embargo, antes de saltar al ciclo, debe almacenar los valores del rango dentro de una nueva variable (mi_rango), como sigue:
mi_rango = Hojas("Hoja2").Rango("F3:H" & ultimafila)
Debe definir explícitamente la referencia de celda inicial (F3) y la referencia de la columna final (H). VBA agrega automáticamente el valor de la fila para completar la matriz de búsqueda.
3. Escribir un bucle para recorrer cada valor de búsqueda
Antes de escribir el ciclo, defina el valor de la fila inicial, 2. Definir un valor inicial para su ciclo es esencial ya que está tratando con elementos dinámicos. En la tabla de destino, la fila 2 es la primera fila de datos. Cambie este valor si sus datos comienzan en una fila diferente.
yo = 2
Puedes usar un hacer mientras bucle para procesar cada fila, comenzando en la fila 2 y terminando en la fila 17. Como el resto del código, este aspecto es dinámico; el bucle se ejecutará hasta que la condición sea falsa. Utilice la condición para buscar un valor que no esté vacío en la primera celda de la fila actual.
Hacer Mientras len (Hojas("Hoja2").Celdas (i, 1).valor) <> 0
Dentro del bucle, puede llamar a la función VLookup para completar las celdas:
Hojas("Hoja2").Celdas (i, 2).Valor = _ Aplicación. Función de hoja de trabajo. VLookup (Hojas("Hoja2") _ .Celdas (i, 1).Valor, mi_rango, 2, Falso) Hojas("Hoja2").Celdas (i, 3).Valor = _ Aplicación. Función de hoja de trabajo. VLookup (Hojas ("Hoja2") _ .Celdas (i, 1).Valor, mi_rango, 3, Falso)
Estas declaraciones establecen el valor de las celdas en la fila actual, en las columnas 2 y 3 respectivamente. Ellos usan el Función de la hoja de cálculo objeto de llamar a la VBuscar función, pasando el valor correspondiente de la columna 1 a buscar. También pasan el rango que definió anteriormente y el índice de la columna relevante para obtener el valor final.
El código vlookup está listo, pero aún necesita aumentar la variable de fila cada vez que se completa el ciclo:
yo = yo + 1
Cada vez que se ejecuta el bucle, aumenta el valor de i por 1. Recuerde, el valor de la fila inicial es 2 y el incremento ocurre cada vez que se ejecuta el ciclo. Utilizar el bucle palabra clave para establecer el final del bloque de código del bucle.
Cuando ejecute todo el código, completará los resultados en ambas columnas, en función de los valores de la tabla de origen.
Aquí está el código completo para referencia:
Sub vlookup_fn1() Dim i As Integer lastrow = Sheets("Sheet2").Range("F3").End (xlDown).Row my_range = Sheets("Sheet2").Range("F3:H" & lastrow) i = 2 Do While Len (Hojas("Hoja2").Celdas (i, 1).Valor) <> 0 En caso de error Reanudar siguientes hojas("Hoja2").Celdas (i, 2).Valor = _ Solicitud. Función de hoja de trabajo. VLookup (Hojas("Hoja2") _ .Celdas (i, 1).Valor, mi_rango, 2, Falso) Hojas("Hoja2").Celdas (i, 3).Valor = _ Aplicación. Función de hoja de trabajo. VLookup (Hojas("Hoja2") _ .Celdas (i, 1).Valor, mi_rango, 3, Falso) i = i + 1 LoopEnd Sub
4. Crear un botón para ejecutar el código
Con el código fuera del camino, puede crear un botón en su libro de Excel para ejecutarlo con un solo clic. Inserte su forma preferida en una hoja de Excel en blanco, haga clic derecho sobre ella y haga clic en el Asignar macro opción.
Dentro del cuadro de diálogo, seleccione el nombre de su subrutina y haga clic en DE ACUERDO.
Cuando desee ejecutar su código, haga clic en el botón para ver cómo se completan los datos inmediatamente.
Uso de Excel VBA para automatizar funciones de búsqueda
Excel VBA es un lenguaje flexible, que está bien ajustado para facilitar la automatización dentro de las diferentes facetas de MS Excel. Existen muchas opciones en MS Excel VBA, desde la automatización de funciones de Excel hasta la creación automática de tablas dinámicas elaboradas.
Cuando trabaje con diferentes segmentos de Excel, puede experimentar con varias opciones para hacer su vida más fácil y eficiente.