
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.