In meiner täglichen Arbeit mit Excel stieß ich auf eine häufige Herausforderung: Wie ermittelt man effizient den letzten Wert eines Zellbereichs, der bestimmte Kriterien erfüllt? Die gängige Frank-Kabel-Lösung mittels Excel-Formel ist ein guter Ansatz, aber sie hat ihre Grenzen, besonders wenn man Werte ausschließen möchte, die sowohl 0 als auch leer („“) sind. Als VBA-Entwickler suchte ich nach flexibleren Lösungen, die verschiedene Anforderungen erfüllen können.

Ermitteln mittels Excel-Formel

Um den letzten Wert eines Zellbereiches der > 0 ist zu ermitteln, kann man die bekannte Frank-Kabel-Lösung verwenden.

> =VERWEIS(2;1/(ZELLBEREICH<>0);ZELLBEREICH)

bzw. für Werte ungleich „“ 

> =VERWEIS(2;1/(ZELLBEREICH<>““);ZELLBEREICH)

Das ganze hat jedoch folgende Einschränkung – man kann nicht festlegen, dass Zellbereich <> 0 und Zellbereich <> „“ ausgewertet wird. (Jedenfalls habe ich noch keine Lösung dafür gefunden)

Ermitteln mittels VBA

Bei einzelnen Spalten oder Zeilen ist die Vorgehensweise des Skripts logisch (von oben nach unten, von links nach recht). Aber wie sieht es bei Zellbereichen aus, die sowohl mehrer Zeilen als auch mehrere Spalten haben. 

Das mag zwar praktisch sein, wirklich viel damit machen kann man aber noch nicht. Wie sieht es aus, wenn man statt horizontal vertikal auslesen möchte? Was ist wenn man den den 4.letzten Wert haben möchte usw. 

Ausgangslage ist folgender Bereich:

Mit der erweiterten Formel kann man dann den Bereich auch folgendermaßen auslesen:

erweiterte Formel

Damit kann man nun eine Menge anstellen. Hier ein paar Beispiele:

Links