Fórmula de Excel: FILTRAR en el primer o último valor n -

Tabla de contenido

Fórmula genérica

=INDEX(FILTER(data,data""),SEQUENCE(n,1,1,1))

Resumen

Para FILTRAR y extraer los primeros o últimos n valores (es decir, los primeros 3 valores, los primeros 5 valores, etc.), puede usar la función FILTRAR junto con ÍNDICE y SECUENCIA. En el ejemplo que se muestra, la fórmula en D5 es:

=INDEX(FILTER(data,data""),SEQUENCE(3,1,1,1))

donde los datos son el rango con nombre B5: B15.

Explicación

Trabajando de adentro hacia afuera, usamos la función SECUENCIA para construir un valor de número de fila para ÍNDICE como este:

SEQUENCE(3,1,1,1)

Estamos pidiendo a SEQUENCE una matriz de 3 filas x 1 columna, comenzando en 1, con un valor de paso de 1. El resultado es una matriz como esta:

(1;2;3)

que se devuelve directamente a la función INDICE como argumento núm_fila:

=INDEX(FILTER(data,data""),(1;2;3))

Para construir la matriz para ÍNDICE, usamos la función FILTRO para recuperar una lista de entradas que no están en blanco de los datos del rango con nombre (B5: B15) como este:

FILTER(data,data"")

El argumento de matriz son datos y el argumento de inclusión es la expresión datos "". Esto se puede traducir literalmente como "valores de retorno de los datos del rango con nombre donde los valores de los datos no están vacíos". El resultado es una matriz con 9 valores como este:

("Atlanta";"Chicago";"Dallas";"Denver";"Los Angeles";"Miami";"New York";"Seattle";"Minneapolis")

Observe que se han eliminado los valores asociados con las dos celdas vacías. Esta matriz se devuelve a la función INDICE como su argumento de matriz.

Finalmente, INDICE devuelve los valores primero, segundo y tercero de la matriz devuelta por FILTRO:

("Atlanta";"Chicago";"Dallas")

Últimos n valores

Para obtener los últimos n valores con FILTRO, use la misma estructura de fórmula, con las entradas a SECUENCIA modificadas para construir una "última n" matriz de números de fila. Por ejemplo, para obtener los últimos 3 valores que no están en blanco en el ejemplo que se muestra, puede usar una fórmula como esta:

=INDEX(FILTER(data,data""),SORT(SEQUENCE(3,1,SUM(--(data"")),-1)))

El truco principal aquí es contar las entradas que no están en blanco en los datos del rango con nombre como este:

SUM(--(data""))

Usamos un doble negativo para forzar los valores VERDADERO FALSO a 1 y 0, luego usamos la función SUMA para obtener el recuento. El resultado se devuelve como argumento de inicio dentro de SEQUENCE. Suministramos -1 para paso a paso hacia atrás desde el principio.

También ajustamos la función SORT alrededor de SEQUENCE para que la matriz devuelta sea (7; 8; 9) y no (9; 8; 7). Esto asegura que los valores se devuelvan en el mismo orden en que aparecen en los datos de origen.

Articulos interesantes...