Fórmula do Excel: FILTRO no primeiro ou no último valor n -

Índice

Fórmula genérica

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

Resumo

Para FILTER e extrair os primeiros ou últimos n valores (isto é, os primeiros 3 valores, os primeiros 5 valores, etc.), você pode usar a função FILTER junto com INDEX e SEQUENCE. No exemplo mostrado, a fórmula em D5 é:

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

onde os dados são o intervalo nomeado B5: B15.

Explicação

Trabalhando de dentro para fora, usamos a função SEQUENCE para construir um valor de número de linha para INDEX como este:

SEQUENCE(3,1,1,1)

Estamos pedindo à SEQUENCE uma matriz de 3 linhas x 1 coluna, começando em 1, com um valor de etapa de 1. O resultado é uma matriz como esta:

(1;2;3)

que é retornado diretamente para a função INDEX como o argumento row_num:

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

Para construir a matriz para INDEX, usamos a função FILTER para recuperar uma lista de entradas não em branco dos dados do intervalo nomeado (B5: B15) como este:

FILTER(data,data"")

O argumento da matriz são dados e o argumento de inclusão é a expressão dados "". Isso pode ser traduzido literalmente como "valores de retorno dos dados do intervalo nomeado onde os valores nos dados não estão vazios". O resultado é uma matriz com 9 valores como este:

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

Observe que os valores associados às duas células vazias foram removidos. Esta matriz é retornada à função INDEX como seu argumento de matriz.

Finalmente, INDEX retorna o primeiro, segundo e terceiro valores da matriz retornada por FILTER:

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

Últimos n valores

Para obter os últimos n valores com FILTER, você usa a mesma estrutura de fórmula, com as entradas para SEQUENCE modificadas para construir uma matriz de "último n" de números de linha. Por exemplo, para obter os últimos 3 valores não em branco no exemplo mostrado, você pode usar uma fórmula como esta:

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

O truque principal aqui é contar as entradas não em branco nos dados do intervalo nomeado como este:

SUM(--(data""))

Usamos um duplo negativo para forçar os valores TRUE FALSE para 1s e 0s e, em seguida, usamos a função SUM para obter a contagem. O resultado é retornado como o argumento inicial dentro de SEQUENCE. Fornecemos -1 para passo a passo para trás desde o início.

Também agrupamos a função SORT em torno de SEQUENCE para que a matriz retornada seja (7; 8; 9) e não (9; 8; 7). Isso garante que os valores sejam retornados na mesma ordem em que aparecem nos dados de origem.

Artigos interessantes...