Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

INDEX: WENN() und ISTLEER() nutzen, um den Spaltenindex zu bestimmen
#1
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


Angehängte Dateien Thumbnail(s)
   
Antworten Top
#2
Hi Steffen,


Zitat:Ich habe meine Beispiel-Tabelle mal hochgeladen
... und wo?
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
Antworten Top
#3
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


Angehängte Dateien
.xlsx   test.xlsx (Größe: 10,27 KB / Downloads: 6)
Antworten Top
#4
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.
[-] Folgende(r) 1 Nutzer sagt Danke an LCohen für diesen Beitrag:
  • Steve64738
Antworten Top
#5
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
Antworten Top
#6
=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.
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste