@ > Home > Inhalt > Der Vorteil von VERGLEICH gegenüber SVERWEIS Excel 97+, GoogleSpreadsheet

Ausgangslage

          A     B         C      D           
    1  LName   FName  born     Place         
    2  Kennedy John F.19170529 Brookline, MA 
    3  Bush    George 19460706 New Haven, CT 
    4  Carter  James  19241001 Plains, GA    
    5  Reagan  Ronald 19110206 Tampico, IL   
    6  Bush    G.H.W. 19240612 Milton, MA    
    7  Ford    Gerald 19130714 Omaha, NE     

AB1: =SVERWEIS("Carter";$A$1:$D$1000;2;) ist die richtige Formel, wenn aus dem Datensatz nur der Vorname "James" zurückgegeben werden soll. Warum jedoch sonst nicht?

Erklärung

Die Information, aus welchem Satz "James" zurückgegeben wird, geht bei =SVERWEIS() verloren. Es handelt sich um Satz 4 (die Überschriften werden hier mitgezählt). Will man nun auch Geburtsdatum und -ort zurückgeben, muss "Carter" nochmals gesucht werden, wenn nur =SVERWEIS() verwendet wird. Also muss Excel unnötigerweise 3mal das gleiche tun, nämlich den 4. Satz ermitteln und daraus das richtige Feld zurückgeben. Bei 70.000 statt 7 Präsidenten wäre dies beispielsweise nicht der 4. Satz, sondern der 40.000ste.

Lösung

Y2: "Carter" (damit Z2 nicht für jeden anderen Präsidenten editiert werden muss).
Z2: =VERGLEICH($Y2;$A$1:$A$1000;) ergibt 4. Mit
AA2: =INDEX($A:$D;$Z2;SPALTE(A2)) - kopiert bis AD2 - werden alle 4 Daten zu "Carter" zurückgegeben.

Gesucht wird nun nur einmal - und die Ermittlung des richtigen Datensatzes in Z2 gespeichert. =INDEX() hat damit die nötige Information, um beliebig viele Felder dieser Zeile im Direktzugriff auszugeben. So benötigt Excel nur 40.004 anstelle von 160.000 Vergleichs- und Zugriffsvorgängen, wenn wir die zugegeben etwas blöde Abwandlung zugrundelegen. Worauf es aber ankommt: Der Zeitaufwand beträgt nur 1/4!

Erweiterung

In der Lösung wurden 4 Daten zu einem Suchbegriff (wenn er das erste Mal auftritt!) zurückgegeben. Was aber, wenn er wie "Bush" mehrfach auftaucht, und alle zugehörigen Daten (also hier 2 Sätze mit jeweils 4 Feldern) mit Formeln wiedergegeben werden sollen, ohne Autofilter oder Spezialfilter zu verwenden?

        Y   Z   AA     AB      AC      AD           
    1  Bush   LName   FName  born     Place         
    2       3 Bush    George 19460706 New Haven, CT 
    3       6 Bush    G.H.W. 19240612 Milton, MA    
    4     #NV #NV     #NV    #NV      #NV           

Y1: Bush
Z2: =VERGLEICH($Y$1;INDEX(A:A;Z1+1):A65000;)+Z1
AA2: =INDEX($A:$D;$Z2;SPALTE(A2))

Z2:AA2 nach unten kopieren (bspw. bis Zeile 100), danach AA2:AD100 rechts ausfüllen (bitte Bereiche genau beachten!).

Um die Fehler nach dem letzten Satz auszublenden, markiere man die ganze Tabelle und weise ihr die bedingte Formatierung "Formel ist" =ODER(ISTFEHLER(A1);($Z1=$Z65536)*($Z1>0)) und Kolorierung der Schriftfarbe wie die Hintergrundfarbe zu.

Beides, also die Lösung und ihre Erweiterung auf mehrere Sätze, findet man auch im Beispiel Rechnung (hier auch als Google Spreadsheet, allerdings leicht verändert in A13:B30 und in Zelle G31 aufgrund anderer bedingter Formatierungen und einer fehlenden INDEX:INDEX-Syntax). Spielen Sie dort mit den Eingaben 1, 2, 3 oder 4 im gelben Feld!