Clever-Excel-Forum

Normale Version: INDEX: WENN() und ISTLEER() nutzen, um den Spaltenindex zu bestimmen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,
an folgender Sache komme ich momentan nicht weiter - ggf. hat ja jemand von euch den entscheidenden Hinweis?
Ich habe meine Beispiel-Tabelle mal hochgeladen. Es geht dabei um folgendes Problem: Es soll jeweils ein Wert aus Spalte E, F oder G ermittelt werden.
Um die entsprechende Zeile zu bekommen, habe ich die INDEX-Formel genutzt (Auswahl von drei Kriterien -> Fall, Jahr und Quartal). Eigentlich würde man jetzt einfach den Spaltenindex auf beispielsweise 4 setzen, um eben den Wert aus Spalte D der entsprechenden Zeile zu erhalten. Das funktioniert auch soweit.

Allerdings ist es so, dass quasi aus den Spalten F, E oder D der Wert genommen werden soll. Abhängig davon, ob eine Zelle leer ist, oder einen entsprechenden Wert zum Inhalt hat.

In etwa so: Im Beispiel wird Zeile 2 gefunden. Der Spaltenindex soll definiert werden, in dem geprüft wird, ob in Spalte F(6) ein Wert steht. Wenn nicht, prüfe Spalte E(5), etc. Im Beispiel wird zwar immer der Wert aus Spalte F ausgegeben, wenn diese befüllt wird. Ist Spalte 6 leer, wird allerdings nicht der Wert aus Spalte 5 genutzt ("E).

Die Formel hier nochmals im Code-Text. Die Suchkriterien für den VERGLEICH() sind noch hart kodiert, was mir momentan die Übersicht etwas erleichtert.

Code:
=INDEX($A$2:$F$8;VERGLEICH(1&2019&4;$A$2:$A$8&$B$2:$B$8&$C$2:$C$8;0);WENN(ISTLEER(6);5;6))


viele Grüße
Steffen
Hi Steffen,


Zitat:Ich habe meine Beispiel-Tabelle mal hochgeladen
... und wo?
Habs jetzt als xslx in den Anhang gelegt. Ich dachte zunächst, dass der Screenshot genügt und vermutete das Problem nur bei den Wertangaben für den Spalten-Index.

Gruß
Steffen
H1: 4#2020#2 (man trennt Verkettungen immer gegen Doppeldeutigkeiten, siehe folgende Formeln!)

H8: 
=VERWEIS(2;1/(
INDEX(D$2:F$8;VERGLEICH(H$1;A$2:A$8&"#"&B$2:B$8&"#"&C$2:C$8;0);)<>0);
INDEX(D$2:F$8;VERGLEICH(H$1;A$2:A$8&"#"&B$2:B$8&"#"&C$2:C$8;0);))

und weil doppelte Teile unschön sind, geht jetzt mit 365 Insider:

H8:
=LET(q;
INDEX(D$2:F$8;VERGLEICH(H$1;A$2:A$8&"#"&B$2:B$8&"#"&C$2:C$8;0););
VERWEIS(2;1/(q<>0);q))


Quellennachweis zum "abartigen" VERWEIS (der nur in Excel funktioniert): ehem. XLF Nr. 48, heute hier zu finden.
Hi,
L. Cohen löst mein Excel-Problemchen.  Big Grin
Besten Dank. Dieser Ansatz gefällt mir - habe mir die Hintergründe dazu auch durchgelesen.

Was mich abseits davon trotzdem noch interessiert: Ich hatte ja den Ansatz via INDEX() und für den Spaltenindex die Kombination WENN() und ISTLEER() genutzt. Hier bin ich allerdings noch nicht so ganz dahintergestiegen, wo genau das Problem bei den Rückgabewerten der WENN-Funktion liegt oder sind es bereits die Input-Werte für WENN(), die ein Problem darstellen?
Sprich: WENN() kann nur für exakte Zellen genutzt werden und bearbeitet nicht den Spaltenindex einer Zeile? Also aus meinem Beispiel oben die if-Schleife für den Spaltenindex:
Code:
WENN(ISTLEER(6);5;6)
Das interessiert mich nebenher - das Problem an sich ist mit deiner Umsetzung gelöst. 

viele Grüße
Steffen
=WENN(ISTLEER(INDEX(blabla;bla;6));5;6) oder
=6-ISTLEER(INDEX(blabla;bla;6))

sonst Du wolle Konstante in WENNe zwinge und das ergebe immer Latte.