Función de coincidencia de Excel VBA

VBA Match Function busca la posición o el número de fila del valor de búsqueda en la matriz de la tabla, es decir, en la tabla principal de Excel. Por ejemplo, BUSCARV, BUSCARH, COINCIDIR, ÍNDICE, etc. Estas son las funciones de búsqueda que son más importantes que otras. Lamentablemente, no tenemos las mismas funciones disponibles en VBA para facilitar las cosas. Sin embargo, podemos usar estas funciones como funciones de hoja de trabajo bajo el script VBA para hacernos la vida más fácil.

Hoy, estamos a punto de aprender la función MATCH que se puede usar como una función de hoja de trabajo en VBA.

VBA Match tiene el mismo uso que la fórmula Match en Excel. Esta función en MS Excel VBA encuentra una coincidencia dentro de una matriz con referencia al valor de búsqueda e imprime su posición. Esta función se vuelve útil cuando necesita evaluar los datos basados ​​en ciertos valores. Por ejemplo, VBA MATCH es útil si tiene los datos salariales de los empleados y necesita averiguar la posición numérica de un empleado en sus datos que tiene un salario menor que / mayor que / igual a un cierto valor. Es realmente útil para analizar los datos y también una línea de código puede automatizar las cosas por usted.

Sintaxis de la función Match en Excel VBA

VBA Match tiene la siguiente sintaxis:

Dónde,

  • Arg1 - Lookup_value - El valor que necesita buscar en una matriz dada.
  • Arg2 - Lookup_array - una matriz de filas y columnas que contienen posibles Lookup_value.
  • Arg3 - Match_type - El tipo de coincidencia que toma el valor -1, 0 o 1.

Si match_type = -1 significa que la función MATCH encontrará el valor más pequeño que sea mayor o igual que el valor_buscado. Para que esto suceda, la matriz de búsqueda debe ordenarse en orden descendente.

Si match_type = 0 significa que la función MATCH encontrará el valor que es exactamente el mismo que el del valor de búsqueda.

Si match_type = +1 significa que la función MATCH encontrará el valor más grande que es menor o igual que el valor_buscado. Para que esto suceda, la matriz de búsqueda debe clasificarse en orden ascendente. El valor predeterminado para el tipo de coincidencia es +1.

¿Cómo utilizar Excel VBA Match Function?

Aprenderemos cómo usar una función VBA Match Excel con algunos ejemplos.

Puede descargar esta plantilla Excel de VBA Match aquí - Plantilla Excel de VBA Match

Función VBA Match - Ejemplo # 1

Supongamos que tenemos datos como se muestra a continuación:

Necesitamos encontrar quién de esta lista tiene un salario de € 30, 000 junto con un puesto en Excel.

Aunque en este conjunto de datos podemos configurar esto manualmente, piense en una imagen más amplia, ¿qué pasa si tiene millones de filas y columnas?

Siga los pasos a continuación para usar la función MATCH en VBA.

Paso 1: defina un subprocedimiento dando un nombre a macro.

Código:

 Sub exmatch1 () End Sub 

Paso 2: Ahora, queremos que nuestra salida se almacene en la celda E2. Por lo tanto, comience a escribir el código como Rango ("E2"). Valor =

Esto define el rango de salida para nuestro resultado.

Código:

 Sub exmatch1 () Rango ("E2"). Valor = Fin Sub 

Paso 3: Use WorksheetFunction para poder usar las funciones de VBA.

Código:

 Sub exmatch1 () Range ("E2"). Value = WorksheetFunction End Sub 

Paso 4: WorksheetFunction tiene una variedad de funciones a las que se puede acceder y usar bajo VBA. Después de "WorksheetFunction", ponga un punto (.) Y luego podrá acceder a las funciones. Elija la función COINCIDIR de la lista desplegable.

Código:

 Sub exmatch1 () Rango ("E2"). Valor = WorksheetFunction.Match End Sub 

Paso 5: Ahora, da los argumentos a la función MATCH. Me gusta Lookup_value. Nuestro Lookup_value se almacena en la celda D2 como se muestra en la siguiente captura de pantalla. Puede acceder a él bajo la función MATCH utilizando la función Range.

Código:

 Sub exmatch1 () Range ("E2"). Value = WorksheetFunction.Match (Range ("D2"). Value, End Sub 

Paso 6: El segundo argumento es Lookup_array. Este es el rango de tabla dentro del cual desea encontrar la posición de Lookup_value. En nuestro caso, es (B1: B11). Proporcione esta matriz utilizando la función Rango.

Código:

 Sub exmatch1 () Range ("E2"). Value = WorksheetFunction.Match (Range ("D2"). Value, Range ("B1: B11"), End Sub 

Paso 7: El último argumento para que este código funcione es Match_type. Queríamos tener una coincidencia exacta para Lookup_value en un rango dado> Por lo tanto, proporcione cero (0) como argumento coincidente.

Código:

 Sub exmatch1 () Range ("E2"). Value = WorksheetFunction.Match (Range ("D2"). Value, Range ("B1: B11"), 0) End Sub 

Paso 8: Ejecute este código presionando F5 o el botón Ejecutar y vea la salida.

Puede ver en la celda E2, hay un valor numérico (6) que muestra la posición del valor desde la celda D2 hasta el rango B1: B11.

Ejemplo # 2 - Función de coincidencia de VBA con bucles

Es fácil cuando solo tiene que buscar un valor en todo el rango. Pero, ¿qué sucede si necesita verificar la posición de varias celdas? Sería duro para una persona que está agregando pedirle que escriba los códigos separados para cada celda.

En tales casos, la función MATCH se puede usar con loop (especialmente For loop en nuestro caso). Vea los siguientes pasos para tener una idea de cómo usamos la función MATCH con loop.

Paso 1: defina un subprocedimiento dando un nombre a macro.

Código:

 Sub Ejemplo2 () End Sub 

Paso 2: defina un número entero que pueda contener el valor de varias celdas en el bucle.

Código:

 Sub Ejemplo2 () Dim i As Integer End Sub 

Paso 3: use el bucle For en el entero para usar los diferentes valores de búsqueda cuya posición se puede almacenar en la columna E.

Código:

 Sub Ejemplo2 () Dim i como entero para i = 2 a 6 End Sub 

Paso 4: Ahora, use el mismo método que usamos en el ejemplo 1, solo que en lugar de Rango, usaremos la función Celdas y usaremos una matriz bidimensional (Filas y columnas) en contraste con el primer ejemplo.

Código:

 Sub Ejemplo2 () Dim i como entero para i = 2 a 6 celdas (i, 5) .Valor = WorksheetFunction.Match (Cells (i, 4) .Value, Range ("B2: B11"), 0) Next i End Sub 

Aquí, Celdas (i, 5) .Value = almacena el valor de las posiciones resultantes en cada fila del 2 al 6 (fila i) en la columna E (columna número 5). En Función de coincidencia, Celdas (i, 4). Los valores comprueban cada Valor de búsqueda presente en la fila 2 a 6 en la cuarta columna. Este valor de búsqueda luego se buscó en la matriz B2: B11 en la hoja de Excel donde los datos están presentes y las posiciones relativas se pueden almacenar en cada fila de la columna 5 (columna E).

Paso 5: Ejecute este código presionando F5 o el botón Ejecutar simultáneamente y vea el resultado. Casi sacará la magia en un código con una sola línea.

En este artículo, aprendimos cómo podemos usar la función MATCH bajo VBA como un caso especial de WorksheetFunction.

Cosas para recordar

  • El valor de búsqueda puede ser un número / texto / valor lógico o puede ser una referencia de celda a un número, texto o valor lógico.
  • Por defecto, Match_type puede considerarse como 1, si se omite / no se menciona.
  • De manera similar a la función MATCH de Excel, VBA MATCH también proporciona la posición relativa de un Lookup_value debajo de Lookup_array y no el valor en sí.
  • Si no se encuentra una coincidencia, se rellenará una celda de Excel relativa con # N / A.
  • Si la función MATCH se usa en valores de texto, no puede diferenciar entre minúsculas y mayúsculas. Por ejemplo, Lalit y lalit son lo mismo. También lo hacen LALIT y lalit.
  • Los caracteres comodín se pueden usar si está buscando la coincidencia exacta (es decir, el tipo de coincidencia es cero). El asterisco de caracteres comodín (*) se puede utilizar para descubrir una serie de caracteres. Mientras que un signo de interrogación (?) Se puede utilizar para encontrar un solo personaje.

Artículos recomendados

Esta es una guía de la función VBA Match. Aquí discutimos VBA Match y cómo usar Excel VBA Match Function junto con ejemplos prácticos y una plantilla de Excel descargable. También puede consultar nuestros otros artículos sugeridos:

  1. Guía completa de VBA en caso de error
  2. ¿Cómo utilizar el formato de número VBA?
  3. Función VBAOKUP VBA con ejemplos
  4. Crear la función VBA en Excel
  5. Función de coincidencia de Excel (ejemplos)

Categoría: