Hallo,
wie gesagt ist es ja auch nicht so ganz einfach (ich habe gerade gemerkt, dass meine Formel noch mindestens einen Schönheitsfehler hat). Ich versuche mal eine kurze Erläuterung.
Deine Frage lässt sich in zwei Teileprobleme zerlegen:
1. Finde ein einer Zeile die letzte Spalte, die einen Wert enthält. (Aufgrund deines Beispiels bin ich der Einfachheit halber davon ausgegangen, dass alle Werte positiv sind).
2. Wähle aus der Zeile den Wert aus dieser Spalte.
Das erste ist das eigentliche Problem, das zweite wird durch die Funktion Index() gelöst. Die folgenden Zeilen/Spalten beziehen sich auf deine Datei mit den Daten in N10:S21, konkrte auf die erste Zeile.
Zum 1.: Mit
lässt sich klären, ob ein Wert eingetragen ist. Das Ergebnis ist entweder 0 oder 1. Mit
multipliziere ich gleich noch die Spaltennummer und erhalte so entweder 0 (wenn kein wert eingetragen ist) oder die die Spaltennummer (hier 14).
Soweit so gut - nur muss das mit der ganzen Zeile geschehen, also mit jeder Zelle aus N10:S10. Nun darf man in der Formel auch mit diesem Bereich arbeiten
. Da ich hier nicht mehr nur mit einer einzelnen Zelle, sondern einem Zellbereich arbeite spricht man von einer Matrixformel (die Berechnungen beziehen sich auf einen Bereich, mathematisch gesprochen eine Matrix). Das Ergebnis ist dann auch kein einzelner Wert mehr, sondern ebenfalls eine Matrix, hier konkret: 14 0 0 0 0 0 (also die belegten Spalten oder 0). Von diesen Zahlen suchen wir das Maximum. Da die 14. Spalte die erste in unserem betrachteten Bereich ist, subtrahieren wir einfach 13 und fertig. Problem 1 gelöst.
Zum 2.: Die Funktion Index() wählt aus einem Bereich das Element der angegebenen Zeile und Spalte aus. Index(N10:S21;2;4) würde aus dem Bereich N10:S21 das Element in der 2. Zeile und 4. Spalte auswählen. Da wir mit dem Bereich N10:S10 nur eine Zeile haben, muss der Zeilenparameter nicht angegeben werden. Kurz mit
wird das Element aus der 1. Spalte des Bereichs N10:S10 (dessen Wert) ausgewählt.
Ich hoffe, dass war jetzt nicht zu theoretisch ...
Zum Schönheitsfehler: Die Subtraktion der 13 ist an der falschen Stelle (was aber nur relevant wird, wenn gar kein Wert eingetragen wäre).
Korrektur:
Der Vollständigkeit halber: Wenn auch Null- oder negative Werte eingetragen werden können, geht (N10:S10>0) schief. Dann
Code: Alles auswählen
=INDEX(N10:S10;;MAX((1-ISTLEER(N10:S10))*(SPALTE(N10:S10)-13)))
oder
Code: Alles auswählen
=INDEX(N10:S10;;MAX((N10:S10<>"")*(SPALTE(N10:S10)-13)))