Excel formula: Get nth match with INDEX / MATCH

Fórmula genérica

{=INDICE(array,K.ESIMO.MENOR(SI(vals=val,FILA(vals)-FILA(INDICE(vals,1,1))+1),nth))}

Explicación

Para recuperar múltiples valores coincidentes de un conjunto de datos con una fórmula, puede usar las funciones SI y K.ESIMO.MENOR para calcular el número de fila de cada coincidencia y enviar ese valor a INDICE. En el ejemplo que se muestra, la fórmula en I7 es:
{=INDICE(amts,K.ESIMO.MENOR(SI(ids=id,FILA(ids)-FILA(INDICE(ids,1,1))+1),H6))}
Donde los rangos nombrados son amts (D4: D11), id (I3) e ids (C4: C11).
Tenga en cuenta que esta es una fórmula de matriz y debe ingresarse con Control + Shift + Enter.

Cómo funciona esta fórmula

En el fondo, esta fórmula es simplemente una fórmula INDICE que recupera el valor en una matriz en una posición dada. El valor para n se proporciona en la columna H, y todo el trabajo "pesado" que realiza la fórmula es averiguar la fila desde la cual recuperar un valor, donde la fila corresponde a la coincidencia "enésima".
La función SI hace el trabajo de averiguar qué filas contienen una coincidencia, y la función K.ESIMO.MENOR devuelve el enésimo valor de esa lista. Dentro de SI, la prueba lógica es:
ids=id
que produce esta matriz:
{VERDADERO;FALSO;FALSO;VERDADERO;FALSO;FALSO;FALSO}
Tenga en cuenta que la identificación del cliente coincide en las posiciones 1 y 4, que aparecen como VERDADERO. El argumento "valor si es verdadero" en SI genera una lista de números de fila relativos con esta expresión:
FILA(ids)-FILA(INDICE(ids,1,1))+1
que produce esta matriz:
{1;2;3;4;5;6;7}
Los resultados de la prueba lógica "filtran" esta matriz y la función SI devuelve el siguiente resultado de la matriz:
{1;FALSO;FALSO;4;FALSO;FALSO;FALSO}
Tenga en cuenta que tenemos números de fila válidos para la fila 1 y la fila 2.
Luego, K.ESIMO.MENOR procesa esta matriz, que está configurada para usar valores en la columna H para devolver valores "enésimos". La función K.ESIMO.MENOR ignora automáticamente los valores lógicos VERDADERO y FALSO en la matriz. Al final, las fórmulas se reducen a:
=INDICE(amts,1) // I6, returns $150
=INDICE(amts,4) // I7, returns $125

Manejo de errores

Una vez que no haya más coincidencias para una identificación determinada, la función K.ESIMO.MENOR devolverá un error # NUM. Puede manejar este error con la función SI.ERROR, o agregando lógica para contar coincidencias y cancelar el procesamiento una vez que el número en la columna H es mayor que el recuento de coincidencias. El ejemplo aquí muestra un enfoque.

Criterios múltiples

Para agregar múltiples criterios, utiliza la lógica booleana, como se explica en este ejemplo.

Comentarios en Facebook


0 comentarios:

Copyright © 2021 TRUJILLOSOFT