Bei statischer Berichtsstruktur und gleichzeitig nicht statischer Abrufstruktur sind die bislang beschriebenen Formeln zwar anwendbar, bedürfen aber einer Hilfestellung. Im Beispiel 2 ist das aus dem Klick in ein Steuerelement resultierende Zeilenargument nicht eindeutig, weil von unterschiedlichen Sortierfolgen abhängig.
Eine INDEX-Formel oder wie hier BEREICH.VERSCHIEBEN muss also z. B. Daten zum Namen "Allweiss" ebenso finden können, wenn auf Listenposition 7 der Steuerelementliste geklickt wurde, als auch, wenn bei Nummernsortierung auf "088-al-0097" (Listenposition 93) geklickt wurde.
In solchen Fällen ist der Einsatz der Funktion VERGLEICH nützlich. Die Funktion VERGLEICH(Suchkriterium;Suchmatrix;Vergleichstyp) ermittelt in Suchmatrix die Zeilenposition von Suchkriterium. Der Vergleichstyp bestimmt die Art des Vergleichs. Wenn Sie genaue Übereinstimmungen suchen wollen, was in unserem Beispiel unbedingt erforderlich ist, müssen Sie als Vergleichstyp die Ziffer 0 (Null) angeben.
Achtung: Dies ist nicht die Default-Einstellung, muss also explizit in die Formel eingegeben werden. Weiteres zu den 3 verschiedenen Varianten von Vergleichstyp finden Sie in der Excel-Hilfe.
Am Beispiel der Formeln im Arbeitsblatt Listen 2, im Zusammenhang mit Abbildung 9:
Abb. 9: INDEX, BEREICH.VERSCHIEBEN und VERGLEICH im funktionalen Zusammenhang
Bildbereich A: Der Anwender hat das Optionsfeld Namen angeklickt, in der verknüpften Zelle rL2.ListenInhaltAusw erscheint die Ziffer 1 (vgl. Kapitel 3.2, Text zu Abbildung 4).
Bildbereich B: Die in Zelle E21 vorhandene Formel liefert deshalb einen Kundennamen.
=BEREICH.VERSCHIEBEN(rP2.Knoten;$C21;WENN(rL2.ListenInhaltAusw=1;1;6)) als Excel-Anweisung: "Gehe im Parameterblatt vom rP2.Knoten so viele Zeilen nach unten, wie es in Zelle C21 vorgegeben ist (also 3 Zeilen)". Dann das Spaltenargument als eingebundene WENN-Formel: "Wenn in Zelle rL2.ListenInhaltAusw die Zahl 1 steht, gehe eine Spalte nach rechts (der Name des Kunden), ansonsten (wenn also in rL2.ListenInhaltAusw die Zahl 2 stünde), 6 Spalten nach rechts, die Nummer des Kunden." Das Spaltenargument der äquivalenten Formel in Zelle F21 lautet WENN(rL2.ListenInhaltAusw=1;2;7)).
Bildbereich C: Der Anwender möchte also die Daten des Kunden Allweiss extrahieren. Bei seiner Auswahl nach Namen erscheint deshalb in der mit dem Steuerelement verknüpften Zelle rL2.KundenAusw die Zahl 7, bei der Auswahl nach Nummern hingegen die Zahl 93. Für diesen Fall (und noch für deutlich kompliziertere) muss nun eine weitere Formel identifizieren, in welcher Zeile der Quelldatenmatrix die Daten tatsächlich zu finden sind. Dazu ist hier als absolut eindeutiger Suchbegriff die Kundennummer erforderlich, und die steht im abgebildeten Fall in Spalte F, im alternativen Fall in Spalte E. Die Formel in Zelle G21: =VERGLEICH(WENN(rL2.ListenInhaltAusw=1;$F21;$E21);rD2.KNr;0) als Excel-Anweisung: "Wenn in der Zelle rL2.ListenInhaltAusw die 1 steht benutze als Suchbegriff den Inhalt aus F21, ansonsten den aus E21. Benutze als Suchmatrix den benannten Bereich rD2.KNr (C8:C157 im Blatt Daten 2), finde die genaue Übereinstimmung." Die Formel liefert in beiden Fällen die richtige Zeilenposition, nämlich 93.
Bildbereich D: Die Formel =INDEX(rL2.PositionsNummern;rL2.KundenAusw;1) in der Zelle rL2.KundenAusw02 (Zelle G11) ermittelt nun aus dem Bereich G15:G169 (er trägt den Namen rL2.PositionsNummern) die Zahl, die von den BEREICH.VERSCHIEBEN-Formeln im Blatt Daten 2 (vgl. Abb. 8) benötigt wird, nämlich auf jeden Fall die 93, egal ob der Anwender in seiner Auswahlliste auf den siebten oder den 93sten Eintrag geklickt hat.