Fórmula de Excel: FILTRO en los primeros n valores con criterios -

Tabla de contenido

Fórmula genérica

=FILTER(data,(range>=LARGE(IF(criteria),n))*(criteria))

Resumen

Para filtrar datos para mostrar los n valores principales que cumplen con criterios específicos, puede usar la función FILTRO junto con las funciones GRANDE e SI. En el ejemplo que se muestra, la fórmula en F5 es:

=FILTER(data,(score>=LARGE(IF(group="b",score),3))*(group="b"))

donde los datos (B5: D16), el grupo (C5: C16) y la puntuación (D5: D16) se denominan rangos.

Explicación

Esta fórmula usa la función FILTRO para recuperar datos basados ​​en una prueba lógica construida con las funciones LARGE e IF. El resultado son las 3 mejores puntuaciones en el grupo B.

La función FILTRO aplica criterios con el argumento de inclusión. En este ejemplo, los criterios se construyen con lógica booleana como esta:

(score>=LARGE(IF(group="b",score),3))*(group="b")

El lado izquierdo de la expresión apunta a puntajes mayores o iguales que el tercer puntaje más alto en el grupo B:

score>=LARGE(IF(group="b",score),3)

La función SI se utiliza para asegurarse de que LARGE solo funcione con puntuaciones del grupo B. Como tenemos 12 puntuaciones en total, IF devuelve una matriz con 12 resultados como este:

(FALSE;65;FALSE;80;FALSE;88;FALSE;76;FALSE;86;FALSE;83)

Observe que las únicas puntuaciones que sobreviven a la operación son del Grupo B. Todas las demás puntuaciones son FALSAS. Esta matriz se devuelve directamente a LARGE como argumento de matriz:

LARGE((FALSE;65;FALSE;80;FALSE;88;FALSE;76;FALSE;86;FALSE;83),3)

LARGE ignora los valores FALSE y devuelve el tercer puntaje más alto, 83.

Ahora podemos simplificar la fórmula para:

=FILTER(data,(score>=83)*(group="b"))

que resuelve:

=FILTER(data,(0;0;0;0;0;1;0;0;0;1;0;1))

Finalmente, FILTRO devuelve registros para Mason, Annie y Cassidy, que se extienden al rango F5: H7.

Ordenar resultados por puntuación

De forma predeterminada, FILTER devolverá registros coincidentes en el mismo orden en que aparecen en los datos de origen. Para ordenar los resultados en orden descendente por puntaje, puede anidar la fórmula FILTRO original dentro de la función CLASIFICAR de esta manera:

=SORT(FILTER(data,(score>=LARGE(IF(group="b",score),3))*(group="b")),3,-1)

Aquí, FILTER devuelve los resultados directamente a la función SORT como argumento de matriz. El índice de clasificación se establece en 3 (puntuación) y el orden de clasificación se establece en -1, para orden descendente.

Articulos interesantes...