Partido de VBA

Al igual que tenemos Index y Match en la hoja de trabajo como funciones de búsqueda, también podemos usar las funciones Match en VBA como una función de búsqueda, esta función es una función de hoja de trabajo y la aplicación accede a ella. método de hoja de trabajo y dado que es una función de hoja de trabajo, los argumentos para la función Match son similares a la función de hoja de trabajo.

Función de coincidencia de VBA

La función Match de VBA 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.

En una hoja de trabajo, las funciones de búsqueda son una parte integral de Excel. Algunas de las funciones de búsqueda importantes son VLOOKUP, HLOOKUP, INDEX y MATCH. Desafortunadamente, no tenemos estas funciones como funciones de VBA. Sin embargo, podemos usarlos como funciones de hoja de trabajo en VBA.

En este artículo, le mostraré cómo usar una de las funciones de búsqueda de hojas de trabajo MATCH en VBA como una función de hoja de trabajo.

¿Cómo usar la función COINCIDIR en VBA Excel?

Le mostraremos un ejemplo simple del uso de la función MATCH de Excel en VBA.

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

Ejemplo 1

En VBA, podemos usar esta fórmula COINCIDIR en Excel como función de hoja de trabajo. Siga los pasos a continuación para usar la función COINCIDIR en VBA.

Paso 1: cree un subprocedimiento dando un nombre de macro.

Código:

 Sub Match_Example1 ()

Paso 2: En la celda E2 necesitamos el resultado, así que inicie el código como Rango ("E2"). Valor =

Código:

 Sub Match_Example1 () Rango ("E2"). Valor = End Sub 

Paso 3: En la celda E2, el valor debe ser el resultado de la fórmula COINCIDIR. Entonces, para acceder a la función VBA MATCH, primero debemos usar la propiedad "WorksheetFunction". En esta propiedad, obtendremos toda la lista de funciones de la hoja de trabajo disponible.

Paso 4: Seleccione la función COINCIDIR aquí.

Código:

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

Paso 5: Ahora el problema comienza porque no obtenemos el nombre de sintaxis exacto, sino que obtenemos la sintaxis como “Arg1, Arg2, Arg3” así. Por lo tanto, debe estar absolutamente seguro de la sintaxis aquí.

Nuestro primer argumento es BÚSQUEDA VALOR, nuestro BÚSQUEDA VALOR está en la celda D2, así que seleccione la celda como Rango ("D2") .

Código:

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

Paso 6: El segundo argumento es Table Array, nuestro rango de matriz de tabla es de A2 a A10. Por lo tanto, seleccione el rango como "Rango (" A2: A10 ")"

Código:

 Sub Match_Example1 () Range ("E2"). Value = WorksheetFunction.Match (Range ("D2"). Value, Range ("A2: A10"), End Sub 

Paso 7: Ahora el argumento final es MATCH TYPE. Necesitamos una coincidencia exacta, así que ingrese el valor del argumento como cero.

Código:

 Sub Match_Example1 () Range ("E2"). Value = WorksheetFunction.Match (Range ("D2"). Value, Range ("A2: A10"), 0) End Sub 

Ejecute la macro, obtendremos la posición del nombre del año que esté en la celda D2.

Ejemplo n. ° 2 - Coincidencia de VBA desde otra hoja

Suponga que el mismo conjunto de datos del anterior está en dos hojas diferentes. Por ejemplo, la matriz de la tabla está en el nombre de la hoja llamado "Hoja de datos" y el Valor de búsqueda está en el nombre de la hoja llamado "Hoja de resultados".

En este caso, necesitamos referirnos a las hojas de trabajo por su nombre antes de referirnos a los rangos. A continuación se muestra el conjunto de códigos con nombres de hojas.

Código:

 Sub Match_Example2 () Sheets ("Hoja de resultados") .Rango ("E2"). Valor = WorksheetFunction.Match (Sheets ("Hoja de resultados") .Range ("D2"). Value, Sheets ("Hoja de datos"). Rango ("A2: A10"), 0) End Sub 

Ejemplo n. ° 3: función de coincidencia de VBA con bucles

Si el resultado que queremos en una sola celda, entonces no hay problema, pero si el resultado tiene que venir en más de una celda, entonces necesitamos usar un bucle VBA para obtener el resultado en todas las celdas.

Suponga que tiene un dato como este.

En estos casos es una tarea hercúlea escribir códigos largos, por lo que cambiamos a bucles. A continuación se muestra el conjunto de código que hará el trabajo por nosotros.

Código:

 Sub Match_Example3 () Dim k As Integer For k = 2 To 10 Cells (k, 5) .Value = WorksheetFunction.Match (Cells (k, 4) .Value, Range ("A2: A10"), 0) Next k End Sub 

Este conjunto de códigos obtendrá el resultado en un abrir y cerrar de ojos.