In der Vorlesung ertönt plötzlich das Wort „klausurrelevant“. Alle erwachen aus dem Tiefschlaf, 200 Kulis klicken, 7 Bierflaschen fallen um, in der letzten Reihe wird ein Lagerfeuer ausgetreten.

Ein bisschen kniffelig war es. Ein bisschen probieren musste ich schon.

Die Aufgabe: in einer Zeile soll ein „x“ an einer oder mehreren Positionen stehen. Die erste Position (von links) soll ermittelt werden und aus einer anderen Zeile (der Überschriftszeile), der entsprechende Wert hierzu angezeigt werden.

Den Wert zu finden, ist nicht schwierig:

=VERGLEICH("x";E165:W165;0)

Den zugehörigen Wert zu ermitteln, auch nicht:

=INDEX($E$162:$W$162;VERGLEICH("x";E165:W165;0))

Da die leeren Zellen einen Fehler erzeugen würden, kann dieser noch abgefangen werden:

=WENNFEHLER(INDEX($E$162:$W$162;VERGLEICH("x";E165:W165;0));"")

Klappt!

Allerdings: In anderen Blöcken werden Zahlen eingetragen. Welche ist die erste Spalte, in der eine Zahl steht?

Die Funktion

=VERGLEICH(">0";E111:S111;0)

versagt jedoch. Allerdings … nach einigen Versuchen:

=VERGLEICH(WAHR;INDEX(ISTZAHL(E109:W109);0);0)

funktioniert! Und man kann die Überschrift suchen über:

=INDEX($E$108:$W$108;VERGLEICH(WAHR;INDEX(ISTZAHL(E109:W109);0);0))

und schließlich:

=WENNFEHLER(INDEX($E$108:$W$108;VERGLEICH(WAHR;INDEX(ISTZAHL(E109:W109);0);0));"")

Da diese Formulare dynamisch per VBA erzeugt werden, stellt es nun keine große Herausforderung mehr dar, diese in VBA-Code umzuwandeln:

.FormulaR1C1 = "=IFERROR(INDEX(R" & intAktuelleZeilenNummer & "C5:R" & intAktuelleZeilenNummer  & "C23,MATCH(""x"",RC[-20]:RC[-2],0)),"""")"

und analog:

.FormulaR1C1 = "=IFERROR(INDEX(R" & intAktuelleZeilenNummer & "C5:R" & intAktuelleZeilenNummer & "C23,MATCH(TRUE,INDEX(ISNUMBER(RC[-20]:RC[-2]),0),0)),"""")"

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.