Coincidencia de índice de VBA

Coincidencia de índice en VBA

La función INDICE & MATCH en la combinación VBA es la alternativa a la función VLOOKUP en Excel. En VBA no nos damos el lujo de usar la función INDICE & MATCH directamente porque estas dos funciones no son parte de las funciones integradas de VBA. Sin embargo, todavía podemos usarlos como parte de la clase de función de la hoja de trabajo.

¿Cómo usar Index Match en VBA? (Paso a paso)

Puede descargar esta plantilla de Excel de coincidencia de índice de VBA aquí - Plantilla de Excel de coincidencia de índice de VBA

Por ejemplo, mire los datos a continuación.

En los datos anteriores, el valor de búsqueda es el nombre del departamento y, en función de este nombre de departamento, debemos extraer el monto del salario.

Pero el problema aquí es que la columna de resultado está en la primera y la columna de valor de búsqueda es, a partir de entonces, la columna de resultado. En este caso, BUSCARV no puede recuperar el monto del salario porque BUSCARV funciona solo de derecha a izquierda, no de izquierda a derecha.

En estos casos, necesitamos usar la fórmula de combinación de la función VBA INDEX & MATCH. Realicemos la tarea de encontrar el monto del salario de cada departamento en el código VBA.

Paso 1: Inicie la rutina del sol.

Paso 2: Declare la variable Integer de VBA.

Código:

 Sub INDEX_MATCH_Example1 () Dim k As Integer End Sub 

Paso 3: Ahora abra For Next Loop en VBA.

Código:

 Sub INDEX_MATCH_Example1 () Dim k As Integer For k = 2 To 5 Next k End Sub 

Paso 4: Dentro del bucle VBA, ejecute la fórmula. En la quinta columna, debemos aplicar la fórmula, por lo que el código es CELLS (k, 5) .Value =

Código:

 Sub INDEX_MATCH_Example1 () Dim k As Integer For k = 2 To 5 Cells (k, 5) .Value = Next k End Sub 

Paso 5: En esa celda, debemos aplicar la fórmula VBA INDEX & MATCH. Como dije, necesitamos usar estas funciones como Función de hoja de trabajo en la clase vba, así que abra la clase de función de la hoja de trabajo.

Código:

Sub INDEX_MATCH_Example1 () Dim k As Integer For k = 2 To 5 Cells (k, 5) .Value = WorksheetFunction. Siguiente k Fin Sub

Paso 6: Después de ingresar a la clase de función de la hoja de trabajo, podemos ver todas las funciones de la hoja de trabajo disponibles, así que seleccione la función INDICE.

Código:

 Sub INDEX_MATCH_Example1 () Dim k As Integer For k = 2 To 5 Cells (k, 5) .Value = WorksheetFunction.Index (Next k End Sub 

Paso 7: Mientras usa la función de hoja de trabajo en VBA, debe estar absolutamente seguro de los argumentos de la fórmula. El primer argumento es una matriz, es decir, de qué columna necesitamos el resultado, en este caso, necesitamos el resultado de A2 a A5.

Código:

 Sub INDEX_MATCH_Example1 () Dim k As Integer For k = 2 To 5 Cells (k, 5) .Value = WorksheetFunction.Index (Range ("A2: A5"), Next k End Sub 

Paso 8: Lo siguiente es de qué número de fila necesitamos el resultado. Como hemos visto en el ejemplo anterior, no podemos proporcionar manualmente el número de fila cada vez. Entonces usa la función COINCIDIR.

Para usar la función COINCIDIR una vez más, necesitamos abrir la clase Función Hoja de trabajo.

Código:

 Sub INDEX_MATCH_Example1 () Dim k As Integer For k = 2 To 5 Cells (k, 5) .Value = WorksheetFunction.Index (Range ("A2: A5"), WorksheetFunction.Match (Next k End Sub 

Paso 9: El primer argumento de las funciones COINCIDIR es el valor de BÚSQUEDA, aquí nuestro valor de búsqueda son los nombres de los departamentos, está allí en las celdas (2, 4).

Dado que cada vez que el número de fila tiene que cambiar, podemos proporcionar la variable "k" en lugar del número de fila manual 2. Celdas (k, 4).

Código:

 Sub INDEX_MATCH_Example1 () Dim k As Integer For k = 2 To 5 Cells (k, 5) .Value = WorksheetFunction.Index (Range ("A2: A5"), WorksheetFunction.Match (Cells (k, 5) .Value, Next k End Sub 

Paso 10: A continuación, debemos mencionar el rango de valores del departamento, es decir, Rango (“B2: B5”).

Código:

 Sub INDEX_MATCH_Example1 () Dim k As Integer For k = 2 To 5 Cells (k, 5) .Value = WorksheetFunction.Index (Range ("A2: A5"), WorksheetFunction.Match (Cells (k, 5) .Value, Range ("B2: B5"), 

Siguiente k

End Sub

Paso 11: A continuación, ponga el argumento como 0 porque necesitamos una coincidencia exacta y cierre los corchetes.

Código:

 Sub INDEX_MATCH_Example1 () Dim k As Integer For k = 2 To 5 Cells (k, 5) .Value = WorksheetFunction.Index (Range ("A2: A5"), WorksheetFunction.Match (Cells (k, 4) .Value, Range ("B2: B5"), 0)) 

Siguiente k

End Sub

Ok, hemos terminado con la parte de codificación. Ejecutemos el código para obtener el resultado en la columna 5.

Entonces, obtuvimos el resultado.

Podemos utilizar esta fórmula como alternativa a la función BUSCARV.