Sie fragen sich vielleicht, ob es eine Möglichkeit gibt, den letzten (nicht größten) Wert in einer Spalte zurückzugeben. Wenn beispielsweise Werte in A1 bis A5 vorhanden sind, möchten Sie möglicherweise, dass der Wert in A5 zurückgegeben wird. Wenn später Werte in A6 bis A8 hinzugefügt wurden, sollte der Wert in A8 zurückgegeben werden.

Es gibt verschiedene Möglichkeiten, wie eine Lösung angegangen werden kann. Die erste besteht darin, eine Formel wie die folgende zu verwenden:

=INDEX(A:A,COUNT(A:A))

Diese Formel gibt den letzten numerischen Wert in einer Spalte zurück, vorausgesetzt, die Werte beginnen bei (in diesem Fall) A1. Dieser Ansatz funktioniert nur, wenn alle Werte in der Spalte numerisch sind. Wenn die Werte nicht numerisch sind oder wenn leere Zellen mit den Werten vermischt sind, ist ein anderer Ansatz erforderlich. Eine Möglichkeit besteht darin, die folgende Formel in Spalte B rechts neben den Zellen zu kopieren, die Werte enthalten können:

=IF(ISNUMBER(A2),IF(A2<>0,ROW(A2),""),"")

In diesem Fall gibt die Formel die Zeilennummer einer Zelle in A zurück, die einen numerischen Wert größer als Null enthält. Die folgende Formel kann dann verwendet werden, um den letzten Wert in Spalte A abzurufen:

=INDEX(A:A,MAX(B:B))

Diese Formel funktioniert, weil sie die größte Zeilennummer aus Spalte B zurückgibt und diese dann als Index verwendet, um den entsprechenden Wert aus Spalte A zurückzugeben.

Wenn Ihr Datenbereich eine Mischung aus numerischen und nicht numerischen Werten enthält (und möglicherweise sogar einige leere Zellen, die im Bereich gemischt sind), können Sie die folgende Formel in Betracht ziehen:

=LOOKUP(2,1/(1-ISBLANK(A:A)),A:A)

Die Funktionsweise dieser Formel ist möglicherweise zunächst nicht ersichtlich. Der ISBLANK-Teil gibt ein Array zurück, das für jede Zelle in Spalte A einen True- oder False-Wert enthält, je nachdem, ob diese Zelle leer ist oder nicht. Dieser wahre oder falsche Wert (der wirklich eine 1 oder 0 ist) wird von 1 subtrahiert, so dass die wahren Werte 0 und die falschen Werte 1 sind.

Der nächste Schritt besteht darin, die 1- oder 0-Werte als Dividende in 1 / x zu verwenden. Dies „invertiert“ den Wert effektiv und Sie erhalten entweder 1 (1/1) oder ein # DIV / 0! Fehler (1/0). Denken Sie daran, dass dies ein Array ist, das dann als Parameter für die LOOKUP-Funktion verwendet wird. Im Array wird nach dem Wert 2 gesucht, der dort nicht vorhanden ist. (Denken Sie daran, dass das Array nur die Werte 1 oder einen Fehlerwert enthält.) Die LOOKUP-Funktion ignoriert tatsächlich alle Fehlerwerte im Array und gibt daher den Offset innerhalb des Bereichs A: A des letzten Array-Elements zurück, das dieses enthält ein 1 Wert. Dies entspricht der letzten Zelle im Bereich, die nicht leer ist.

Wie Sie sehen, kann es manchmal etwas schwierig sein, den letzten Wert in einer Spalte zurückzugeben. Ein sauberer Ansatz besteht darin, einfach eine eigene VBA-Funktion zu entwickeln, die den gewünschten Wert zurückgibt. In diesem Fall können Sie die Funktion so programmieren, dass sie einen beliebigen Wert zurückgibt – nicht nur numerische Werte. Ein gutes Beispiel für eine solche Funktion finden Sie auf der Website von John Walkenbach. Überprüfen Sie Folgendes:

http://spreadsheetpage.com/index.php/tip/determining_the_last_non_empty_cell_in_a_column_or_row/

ExcelTips ist Ihre Quelle für kostengünstige Microsoft Excel-Schulungen.

Dieser Tipp (2512) gilt für Microsoft Excel 97, 2000, 2002 und 2003. Eine Version dieses Tipps für die Multifunktionsleistenschnittstelle von Excel (Excel 2007 und höher) finden Sie hier: