Excel-Formel: FILTER für erste oder letzte n Werte -

Inhaltsverzeichnis

Generische Formel

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

Zusammenfassung

Um die ersten oder letzten n Werte (dh die ersten 3 Werte, die ersten 5 Werte usw.) zu filtern und zu extrahieren, können Sie die Funktion FILTER zusammen mit INDEX und SEQUENCE verwenden. In dem gezeigten Beispiel lautet die Formel in D5:

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

Dabei sind Daten der benannte Bereich B5: B15.

Erläuterung

Wir arbeiten von innen nach außen und verwenden die SEQUENCE-Funktion, um einen Zeilennummernwert für INDEX wie folgt zu erstellen:

SEQUENCE(3,1,1,1)

Wir bitten SEQUENCE um ein Array mit 3 Zeilen x 1 Spalte, beginnend bei 1, mit einem Schrittwert von 1. Das Ergebnis ist ein Array wie das folgende:

(1;2;3)

Dies wird direkt an die INDEX-Funktion als row_num-Argument zurückgegeben:

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

Zur Konstruktion des Arrays für INDEX, verwenden wir die Filterfunktion eine Liste der nicht-leere Einträge aus den benannten Bereich abzurufen Daten (B5: B15) wie folgt aus :

FILTER(data,data"")

Das Array-Argument sind Daten, und das Include-Argument sind die Ausdrucksdaten "". Dies kann wörtlich übersetzt werden als "Rückgabewerte aus den benannten Bereichsdaten , bei denen Werte in Daten nicht leer sind". Das Ergebnis ist ein Array mit 9 Werten wie folgt:

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

Mit den beiden leeren Zellen verknüpfte Hinweiswerte wurden entfernt. Dieses Array wird als Array-Argument an die INDEX-Funktion zurückgegeben.

Schließlich gibt INDEX den 1., 2. und 3. Wert aus dem von FILTER zurückgegebenen Array zurück:

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

Letzte n Werte

Um die letzten n Werte mit FILTER zu erhalten, verwenden Sie dieselbe Formelstruktur, wobei die Eingaben für SEQUENCE geändert wurden, um ein "last n" -Array von Zeilennummern zu erstellen. Um beispielsweise die letzten 3 nicht leeren Werte im gezeigten Beispiel zu erhalten, können Sie eine Formel wie die folgende verwenden:

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

Der wichtigste Trick hier zählt die nicht leere Einträge in den benannten Bereich Daten wie folgt aus :

SUM(--(data""))

Wir verwenden ein doppeltes Negativ, um die TRUE FALSE-Werte auf 1s und 0s zu setzen, und verwenden dann die SUMME-Funktion, um die Zählung zu erhalten. Das Ergebnis wird als Startargument in SEQUENCE zurückgegeben. Wir liefern -1 für Schritt zu Schritt von Anfang an.

Wir wickeln auch die SORT-Funktion um SEQUENCE, sodass das zurückgegebene Array (7; 8; 9) und nicht (9; 8; 7) ist. Dadurch wird sichergestellt, dass die Werte in derselben Reihenfolge zurückgegeben werden, in der sie in den Quelldaten angezeigt werden.

Interessante Beiträge...