Formula di Excel: FILTRA sui primi o sugli ultimi n valori -

Sommario

Formula generica

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

Sommario

Per FILTRARE ed estrarre i primi o gli ultimi n valori (cioè i primi 3 valori, i primi 5 valori, ecc.), È possibile utilizzare la funzione FILTRO insieme a INDICE e SEQUENZA. Nell'esempio mostrato, la formula in D5 è:

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

dove i dati sono l'intervallo denominato B5: B15.

Spiegazione

Lavorando dall'interno verso l'esterno, utilizziamo la funzione SEQUENZA per costruire un valore del numero di riga per INDICE in questo modo:

SEQUENCE(3,1,1,1)

Chiediamo SEQUENZA per un array di 3 righe x 1 colonna, a partire da 1, con un valore di passo di 1. Il risultato è un array come questo:

(1;2;3)

che viene restituito direttamente alla funzione INDICE come argomento row_num:

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

Per costruire l'array per INDEX, utilizziamo la funzione FILTER per recuperare un elenco di voci non vuote dai dati dell'intervallo denominato (B5: B15) in questo modo:

FILTER(data,data"")

L'argomento della matrice è data e l'argomento include è l'espressione data "". Questo può essere tradotto letteralmente come "valori di ritorno dai dati dell'intervallo denominato dove i valori nei dati non sono vuoti". Il risultato è un array con 9 valori come questo:

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

Notare che i valori associati alle due celle vuote sono stati rimossi. Questa matrice viene restituita alla funzione INDICE come argomento della matrice.

Infine, INDICE restituisce il primo, il secondo e il terzo valore dalla matrice restituita da FILTER:

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

Ultimi n valori

Per ottenere gli ultimi n valori con FILTER, si utilizza la stessa struttura della formula, con gli input di SEQUENCE modificati per costruire un "ultimo n" array di numeri di riga. Ad esempio, per ottenere gli ultimi 3 valori non vuoti nell'esempio mostrato, puoi utilizzare una formula come questa:

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

Il trucco principale qui è contare le voci non vuote nei dati dell'intervallo denominato in questo modo:

SUM(--(data""))

Usiamo un doppio negativo per forzare i valori VERO FALSO su 1 e 0, quindi usiamo la funzione SOMMA per ottenere il conteggio. Il risultato viene restituito come argomento iniziale all'interno di SEQUENCE. Forniamo -1 per fare un passo indietro dall'inizio.

Avvolgiamo anche la funzione SORT attorno a SEQUENCE in modo che l'array restituito sia (7; 8; 9) e non (9; 8; 7). Ciò garantisce che i valori vengano restituiti nello stesso ordine in cui appaiono nei dati di origine.

Articoli interessanti...