Abrufen des ersten und letzten Werts für einen Bereich

Abrufen des ersten und letzten Werts für einen Bereich

Angenommen, ich habe einen Bereich A1:A27 und dieser Bereich enthält eine Mischung aus leeren und nicht leeren Werten. Dann hätte ich gerne zwei Funktionen: eine, um den ersten nicht leeren Wert im Bereich abzurufen, und eine, um den letzten nicht leeren Wert im Bereich abzurufen, und zwar so:

=First(A1:A27)
=Last(A1:A27)

Die Bereiche sind nur eindimensionale Arrays.

Ich werde viele Instanzen davon in meinem Blatt ausführen müssen, sodass App-Skripte aufgrund von Ineffizienzen nicht verwendbar sein werden.

Wie würden Sie diese Funktionen schreiben?

Antwort1

Wir könnten dies verwenden, um den ersten nicht leeren Wert im Bereich zu finden:

=INDEX(A1:A27, MATCH(TRUE, A1:A27<>"", 0))

Und wir könnten dies verwenden, um den letzten nicht leeren Wert im Bereich zu finden:

=INDEX(A1:A27, MAX(IF(A1:A27<>"", ROW(A1:A27))))

Antwort2

TOCOL-Funktion

Wenn Sie nur nach den Werten suchen, entfernt TOCOL Leerzeichen und Sie können INDEX verwenden, um den ersten Wert zu erfassen. Für den letzten Wert machen Sie dasselbe, sortieren dabei aber absteigend nach Zeilen:

# Ersten Wert abrufen 
=INDEX(TOCOL(A1:A27,1),1)

# Letzten Wert abrufen 
=INDEX(TOCOL(SORTIEREN(A1:A27,ZEILE(A1:A27),0),1),1)

XMATCH-Funktion

DerXMATCH-Funktionhat für diese Anwendung einen Vorteil gegenüber MATCH, da es Suchen von „Von Anfang nach Ende“ und „Von Ende nach Anfang“ unterstützt.

# Syntax 
=XMATCH(Suchschlüssel, Nachschlagebereich, [Übereinstimmungsmodus], [Suchmodus])

XMATCH Beispiele

Die Syntax für den ersten Wert ist ähnlich wie bei MATCH, außerexact_match=0ist Standard und kann daher weggelassen werden.

# Erster Wert 
=INDEX(A1:A27, XMATCH(WAHR, A1:A27<>""))      
=ZEILE(INDEX(A1:A27, XMATCH(WAHR, A1:A27<>""))) //Gibt die Zeilennummer zurück

XMATCH unterstützt die Suche von letztem zum ersten durch die Angabesearch_mode=-1

# Letzter Wert 
=INDEX(A1:A27, XMATCH(WAHR, A1:A27<>"",,-1))
=ZEILE(INDEX(A1:A27, XMATCH(WAHR, A1:A27<>"",,-1))) //Gibt die Zeilennummer zurück

verwandte Informationen