SVERWEIS mit Raketenantrieb 38

Artikelbild-211
Dem lahmen SVERWEIS werden mit einem Trick Beine gemacht!
 

Der SVERWEIS gehört sicherlich zu den beliebtesten Excel-Funktionen. Vermutlich kannst du dich noch daran erinnern, wie stolz du warst, als du zum ersten mal durchstiegen hast, wie diese Funktion anzuwenden ist und welche tollen Dinge man damit anstellen kann – wie zum Beispiel das Abgleichen von zwei Listen gegeneinander.

Allerdings hat der SVERWEIS auch verschiedene Nachteile. Wenn er bei großen Listen mit mehreren 1000 Datensätzen zum Einsatz kommt, dann kann sich das Ganze zu einem ziemlichen Geduldsspiel entwickeln. Mit anderen Worten: Der SVERWEIS kann eine ziemlich lahme Krücke sein.

Allerdings gibt es einen Trick, wie man diese ansonsten sehr praktische Funktion schneller macht. Und damit meine ich RICHTIG schneller!

Und so geht der SVERWEIS mit Raketenantrieb:

Der Standard-SVERWEIS

Zu Beginn kommt eine kleine Auffrischung zur Syntax der Funktion.
=SVERWEIS(Suchkriterium;Matrix;Spaltenindex;Bereich_Verweis)

Interessant ist das letzte Argument, das in der Hilfefunktion „Bereich_Verweis“ genannt wird. Zulässig sind dabei die Werte WAHR oder FALSCH:
WAHR = Ungefähre Übereinstimmung
FALSCH = Genaue Übereinstimmung

Im Beispiel
=SVERWEIS(A2;G2:K10000;3;FALSCH)
wird der Wert aus Zelle A2 in Spalte G des Bereichs G2:K10000 gesucht und im Falle eines exakten Treffers der Wert aus der dritten Spalte ausgegeben.

Vorteile:
Der zu durchsuchende Bereich (G2:K10000) kann unsortiert sein.
Es wird nur ein Ergebnis geliefert, das exakt mit dem Suchkriterium übereinstimmt.

Nachteil:
Die Funktion muss die komplette Tabelle bis zum Ende durchsuchen und ist daher (bei großen Tabellen) ziemlich langsam.

Etwas anders funktioniert die Variante mit dem Argument WAHR, bei der die zu durchsuchende Tabelle zwingend aufsteigend sortiert sein muss.

Vorteil:
Die Funktion ist extrem schnell.

Nachteil:
Wenn es keine exakte Übereinstimmung gibt, wird der nächstgelegene Wert geliefert, der dem Suchkriterium ähnlich ist. Doch dies ist in den meisten Fällen nicht gewünscht. Ich behaupte sogar, dass in 99,9% der Anwendungsfälle eine exakte Übereinstimmung mit dem Suchkriterium gewünscht ist und daher der das Argument FALSCH zum Einsatz kommt.

Und damit die Schneckenvariante…

SVERWEIS mit Raketenantrieb

Man bräuchte also eine Möglichkeit, die Vorteile der beiden oben genannten Varianten miteinander zu kombinieren. Also die exakte Übereinstimmung auf der einen Seite und die hohe Ausführungsgeschwindigkeit auf der anderen Seite.

Und genau das geht mit einer kleinen WENN-Funktion.

Um bei meinem Beispiel von oben zu bleiben:
=WENN(SVERWEIS(A2;G2:K10000;1;WAHR)=A2;SVERWEIS(A2;G2:K10000;3;WAHR);NV())

Einzige wichtige Voraussetzung ist, dass die zu durchsuchende Tabelle (hier also G2:K10000) aufsteigend sortiert ist!

Wie funktioniert dieser Raketenantrieb also?

Da die WAHR-Variante normalerweise ohne den kleinsten Hinweis auch ein nicht gewünschtes ähnliches Ergebnis liefert, fangen wir diesen Fall über eine WENN-Funktion ab. Damit wird geprüft, ob der Wert, den die erste SVERWEIS-Funktion zurückliefert, auch tatsächlich gleich dem Suchkriterium ist:
WENN(SVERWEIS(A2;G2:K10000;1;WAHR)=A2

Wichtig: Als Spaltenindex muss hier zwingend 1 verwendet werden!

Falls die Bedingung erfüllt ist (also eine exakte Übereinstimmung vorliegt), wird über den zweiten SVERWEIS der gewünschte Wert aus Spalte 3 ausgegeben.
Und falls es keine exakte Übereinstimmung gibt, wird über die NV-Funktion der Fehlerwert #NV! ausgegeben.

Wenn du jetzt der Meinung bist, dass zwei SVERWEISE verpackt in eine WENN-Funktion doch nicht so schnell sein können, dann irrst du dich.

Ein paar von mir durchgeführte Tests beweisen das Gegenteil. Dazu habe ich eine fiktive Kundentabelle gegen eine Bankentabelle abgeglichen, um über die BLZ den Banknamen anzureichern. Die zu durchsuchende Bankentabelle enthielt ca. 3.500 Datensätze, die Kundentabelle wahlweise 10.000, 50.000 und schließlich 100.000 Datensätze.

Und hier die Ergebnisse meiner kleinen Messreihe:

Tabelle mit den Messergebnissen

Tabelle mit den Messergebnissen

Bei 100.000 Datensätzen war die Variante mit der WENN-Funktion und den beiden SVERWEISEN 26 mal so schnell, wie der Standard-SVERWEIS. Was also zuerst über eine halbe Minute gedauert hat, war dann in weniger als 2 Sekunden erledigt!

Auch wenn die Ergebnisse nicht repräsentativ sind und im Einzelfall sicherlich anders ausfallen werden, sind die Unterschiede signifikant. Und wenn das kein Raketenantrieb ist, dann weiß ich es auch nicht…

 

Das könnte dich auch interessieren:
Und immer daran denken: Excel beißt nicht!

P.S. Die Lösung ist immer einfach. Man muss sie nur finden.
(Alexander Solschenizyn)

P.P.S. Das Problem sitzt meistens vor dem Computer.



Avatar-Foto

Über Martin Weiß

Er ist das Gesicht hinter dem Blog "Der Tabellenexperte". Seit 2013 veröffentlicht er hier Beiträge zu seinem Lieblingsprogramm: Microsoft Excel. Martin Weiß ist zertifizierter Microsoft Excel Expert und verdient sein Geld als selbständiger Excel-Berater, -Entwickler und -Trainer.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

38 Gedanken zu “SVERWEIS mit Raketenantrieb

  • Avatar-Foto
    Andreas Unkelbach

    Hallo Martin,

    vielen Dank für dein perfektes Timing und hier vorgestellte Beschleunigung für Verweisfunktionen. Eigentlich wollte ich heute mich intensiver mit einer Lösung in Richtung Datenmodell beschäftigen (dein Buch zu Pivot-Tabellen ist hier ein Fundus an guter Anregungen) aber nun scheine ich hier im Artikel eine bessere Variante entdeckt zu haben.

    Hintergrund ist, dass ich zu einer Liste aus Projektnummern entweder aus einer vorgegebenen Statistik oder einen Finanzbericht mir Daten ziehen muss mit entsprechend vielen Einzeldaten. Deine Idee mit einer ungefähren Suche und exakte Überprüfung des Suchergebnis dient mir gedanklich nun als Hilfsspalte, ob ein Wert vorhanden ist, so dass ich hier den Eintrag aus der führenden Statistik nehmen kann oder eben aus den anderen Bericht.

    Insgesamt kann ich mir hier also etliche Verweisfunktionen ersparen indem ich vorab prüfe, ob überhaupt Daten vorhanden sind.

    Vielen Dank für die Anregung, die nun tatsächlich weiter hilft und mir von der Idee schon so gut gefällt, dass hier ein bestehendes Konzept direkt wieder erneut hinterfragt wird.

    Viele Grüße
    Andreas

    • Avatar-Foto
      Martin Weiß

      Hallo Andreas,

      danke für Dein Feedback und umso besser natürlich, wenn ich mit dem Artikel zufällig das richtige Timing erwischt habe. Die Möglichkeiten in Excel sind ja meistens sehr vielfältig, so dass die Auswahl des im konkreten Einzelfalls geeigneten Mittels (Tabellenfunktionen, Datenmodell/Pivot, PowerQuery etc) manchmal schwieriger ist, als die Problemlösung als solche.

      Ich freue mich auf jeden Fall, wenn ich dich auf ein paar neue Ideen gebracht habe und wünsche viel Spaß bei der Umsetzung!

      Schöne Grüße,
      Martin

  • Avatar-Foto
    Michael

    Hi Martin,

    bin ja immer wieder erstaunt, welche Kniffe du noch ausgraben kannst. Echt super!
    Da ich immer wieder User betreue, die aufgrund von vielen Datensätzen in Kombination mit dem SVerweis Performanceprobleme haben, werde ich einmal den „Raketenantrieb“ testen. Bin sehr gespannt!
    Einziger Nachteil ist die Sortierung, die beim Hinzufügen von Datensätzen vielleicht vergessen wird….

    Danke für diesen super Tipp!

    • Avatar-Foto
      Martin Weiß

      Hallo Michael,

      ja, die Sortierung darf tatsächlich nicht vergessen werden, sonst funktioniert das leider nicht.

      Schöne Grüße,
      Martin

  • Avatar-Foto
    Jackie251

    Aus meiner Sicht fehlt ein wichtiger Hinweis auf Performance:
    Wenn man nicht nur einen Wert übernehmen muss sondern mehrerer Werte (zB Artikelnummer als Suchwert und übernommen werden sollen Preis, Warenkategorie und MWST Satz ; oder Personalnummer ist der Suchwert und Name, Vorname, Adresse usw). Dann ist der Sverweis die falsche Wahl, hier nutzt man dann Index/Vergleich.

    • Avatar-Foto
      Martin Weiß

      Hallo Jackie251,

      du hast natürlich recht, INDEX und VERGLEICH sind immer eine gute Alternative.

      Schöne Grüße,
      Martin

  • Avatar-Foto
    Rosa Mick

    Hallo Martin,
    vielen Dank wieder mal für deinen tollen Tip. ?Kann diesen Raketenantrieb sehr gut gebrauchen, da meine Tabellen immer sehr groß sind. Habe zum Raketenantrieb eine Frage, wie verhält sich der Sverweis wenn sich ich in meiner Tabelle Duplikate befinden? Diese kann ich leider nicht aus meiner Tabelle entfernen, da ich diese für Auswertungen benötige. Habe sie sonst immer unterschiedlich sortiert. Muss ich das jetzt auch machen?
    Viele Grüße Rosa

    • Avatar-Foto
      Martin Weiß

      Hallo Rosa,

      Duplikate sind ein generelles Problem, aber das ist auch schon beim normalen SVERWEIS der Fall. Der SVERWEIS wird immer nur den ersten gefundenen Treffer ausgeben, die Sortierung hilft da nicht wirklich weiter. Es bleibt nur die Möglichkeit, eine Eindeutigkeit sicherzustellen. Das wäre über eine Hilfsspalte möglich oder über die Verwendung von mehreren Suchkritierien, wie in diesem Artikel beschrieben:
      https://www.tabellenexperte.de/super-sverweis/

      Schöne Grüße,
      Martin

  • Avatar-Foto
    Wilfried Kunze

    Hallo Martin,

    statt WAHR und FALSCH sind auch 1 und 0 zulässsig. Bevorzuge ich, weil es kürzer ist. Bei Sverweis ohne dieses letzte Argument wird kein ungefährer Wert ausgegeben, sondern der nächstkleinere. Deshalb sollten auch Lücken vermieden werden.

    Ich bereite eine Kleinigkeit in Excel vor, dann schicke ich etwas dazu.

    Viele Grüße

    Wilfried

    • Avatar-Foto
      Martin Weiß

      Hallo Wilfried,

      0 und 1 gehen natürlich auch. Vielen Dank für die Ergänzungen.

      Schöne Grüße,
      Martin

  • Avatar-Foto
    Stephan Franke

    Hallo Martin,
    1000 Dank ! Das ist einer der genialsten Tipps, die ich in den letzten Monaten bekommen habe. Meine Tabellen haben bis zu einer halben Million Zeilen, die ich mit mehreren SVERWEISEN ergänzen muss. Dank des Raketenantriebs braucht es jetzt nur noch ein Viertel der Zeit.
    Es wäre super, wenn Du in Deinem Blog eine Art „Performance Rubrik“ einrichten könntest. Oder einen Tag, unter dem man alle Tipps zur Verbesserung der Performance finden kann.
    Viele Grüße, Stephan

    • Avatar-Foto
      Martin Weiß

      Hallo Stephan,

      freut mich, wenn der Tipp geholfen hat. Das mit der Performance-Rubrik muss ich mir noch überlegen.

      Schöne Grüße,
      Martin

  • Avatar-Foto
    Oliver Berrang

    Hallo Martin,
    ich habe zurzeit mit folgendem Problem zu tun. Vielleicht kann mir diese Lösung dabei helfen, vielleicht kennst du aber auch andere Lösungswege?

    Das Problem: In Tabellenblatt 2 ist ein Dropdownfeld mit Liste. In Tabellenblatt 3 ist eine Tabelle wo die selbe Dropdown Liste hinterlegt ist. Ich muss jetzt die Daten aus Tabellenblatt 3 in Tabellenblatt 2 übernehmen, dabei soll mir der SVerweis helfen. Jetzt ist es so, dass das Suchkriterium beim Sverweis, ein Eintrag aus der Dropdown liste ist, dem entsprechend kommt es vor, unter einem Suchkriterium mehrere Einträge vorhanden sind. Den ersten Eintrag kann ich problemlos mit dem SVerweis überführen. Wie geht das bei dem zweiten und dritten Eintrag hinaus. Die Reihenfolge, ob vom größten,

    Viele Grüße

    Gruffi

  • Avatar-Foto
    Dominik Marquardt

    Hallo Martin,

    was man so alles über die Google Suche nach „Excel sverweis schneller“ findet…
    Ich hatte hier einen doppelten sverweis, der bei rund 30.000 Zeilen mächtig Zeit gebraucht hat. Den habe ich nach Deinem Schema aufgebohrt:

    ALT: =WENN(SVERWEIS($A2;$A:$CP;F$6;FALSCH)=0;E2;SVERWEIS($A2;$A:$CP;F$6;FALSCH))

    NEU: =WENN(WENN(SVERWEIS($A2;$A:$CP;1;WAHR)=$A2;SVERWEIS($A2;$A:$CP;F$6;WAHR);NV())=0;E3;WENN(SVERWEIS($A2;$A:$CP;1;WAHR)=$A2;SVERWEIS($A2;$A:$CP;F$6;WAHR);NV()))

    Gleich mal den Link an die Kollegen geschickt… 🙂

    • Avatar-Foto
      Martin Weiß

      Hallo Dominik,

      das ist schön, wenn der Tipp geholfen hat. Und ich freue mich natürlich auch für die Weiterempfehlung 🙂

      Schöne Grüße,
      Martin

  • Avatar-Foto
    Ingo

    Vielen Dank Michael.
    Ich habe eben einen Bericht mit deinem Raketen Sverweis ausgestattet.
    Und statt 1-2 Stunden für den Abgleich von 170.000 gegen 220.000 Daten braucht er nun nur Sekunden.
    Ich bin begeistert.

    • Avatar-Foto
      Martin Weiß

      Hallo Ingo,

      freut mich zu hören, das nenne ich mal eine echte Verbesserung 🙂

      Schöne Grüße,
      Martin

  • Avatar-Foto
    Ralf

    Interessante Möglichkeit die leider nur in sortierter Spalte funktioniert.
    Keine Ahnung, ob das performancetechnisch noch einen weiteren Unterschied macht, aber in der ersten SVERWEIS (Prüfung) würde es ja reichen, die Matrix G2:G10000 statt bis K10000 zu übergeben.

    Und die 99,9 % würde ich nicht unterschreiben, denn es gibt viele Anwendungen für WAHR, insbesondere bei Provisions-/Rabattstaffeln oder Ähnlichem.

    • Avatar-Foto
      Martin Weiß

      Hallo Ralf,

      ja, das stimmt, im ersten SVERWEIS reicht auch die Spalte G. Und ja, diese Variante setzt eine sortierte Liste zwingend voraus und ist daher nur in diesen Fällen einsetzbar.
      Ich denke trotzdem, dass in der Praxis in den allermeisten Fällen der Parameter FALSCH zum Einsatz kommt. Aber für das Beispiel mit Preis oder Provisionsstaffeln hast du definitiv Recht.

      Schöne Grüße,
      Martin

  • Avatar-Foto
    Ralf

    Ja, die meisten Fälle sind sicher mit FALSCH.
    Aber wohl deutlich weniger als 99,9%
    Weitere Beispiele:
    Punkte -> Noten
    Steuern -> Steuersatz (Splittingtabelle)
    Punkte -> Mitgliedsstatus/Bonus
    Geschwindigkeitsübertretung -> Strafe
    Staffelpreise
    BMI Einteilung
    Einteilung Dorf, Ort, Stadt, Großstadt, Millionenstadt
    usw.
    … also alles wo gestaffelte Werte vorkommen, die nicht exakt sondern in Bereiche eingeteilt sind.

    Ich weiß, ist Haarspalterei, habe aber eben selbst in bestimmt 1/3 der Fälle mit Aufgaben zu tun, die WAHR sind 😉

    • Avatar-Foto
      Martin Weiß

      Hallo Ralf,

      ok, du hast mich überzeugt, meine 99,9% sind wohl doch etwas zu hoch gegriffen 🙂

      Schöne Grüße,
      Martin

  • Avatar-Foto
    Alex

    Moin Martin,

    ich habe nun schon gewisse Zeit an meinem Problem gebastelt und komme leider zu keinem funktionierenden Ergebnis weshalb ich mich nun an dich wende.

    Ich möchte einen Datenbankauszug mit Berechtigungen für User bei einem Programm dynamisch in ein Raster übertragen.
    Der kniff dabei ist dass ich das ganze am ende des Tages für mehrere Programme und deren validierung verwenden möchte, sich also sowohl die User als auch die entsprechenden Berechtigungen ändern werden.

    Ob die User und die Berechtigungen Horizontal und oder Vertikal angeordnet sind ist dabei vollkommen egal und ich gehe davon aus dass ich wohl nicht ohne eine Hilfsseite für die Berechnungen auskommen werde.
    Wichtig ist für mich dass ich für jede Berechtigung eines Users (z.B. Daten ändern / Leseberechtigung / Daten einsehen usw…) ein „X“ in dem Raster gesetzt bekomme.
    Habe auch schonmal versucht mir das irgenwie aus einer Pivot Tabelle ausgeben zu lassen aber das hat nicht so ganz funktioniert.

    Da ich hier bisher immer wieder hervorragende Hinweise gefunden habe (an dieser Stelle möchte ich mich recht herzlich dafür bedanken) hoffe ich nun für mein Problem eine Lösung bzw einen Lösungsansatz zu bekommen.

    Schonmal vielen Dank und ein schönes Wochenende.

    Alex

    • Avatar-Foto
      Martin Weiß

      Hallo Alex,

      auf Basis deiner Beschreibung sehe ich auch eine Pivot-Tabelle als das einzige geeignete Instrument. Der Schlüssel liegt in der Struktur der Quelltabelle, also dem Datenbankauszug. Hier musst Du ggf. mit Power Query nachhelfen, um ihn in die gewünschte Form zu bringen. Aber das ist immer sehr individuell, einen konkreten Tipp kann ich dir daher hier auch nicht geben.

      Schöne Grüße,
      Martin

  • Avatar-Foto
    Peter Schlüter

    Hallo Martin,

    ich arbeite schon seit der ersten Version mit Excel (damals 1.0 sogar noch unter DOS). Interessant, das man auch nach so langer Zeit entdeckt: Es gibt andere User, die einfach mal so tolle Lösungen finden. Heute würde ich bei Massendaten allerdings eher auf Datenbanken zurückgreifen.

    Kleiner Hinweis von mir zu deiner Erklärung:
    „Einzige wichtige Voraussetzung ist, dass die zu durchsuchende Tabelle (hier also G2:K10000) aufsteigend sortiert ist!“
    müsste eigentlich heißen
    „Einzige wichtige Voraussetzung ist, dass in der zu durchsuchenden Tabelle (hier also G2:K10000) die erste Spalte aufsteigend sortiert ist!“

    Freundliche Grüße
    Peter Schlüter

    • Avatar-Foto
      Martin Weiß

      Hallo Peter,

      vielen Dank für dein Feedback! Ab einem bestimmten Punkt sind Datenbanken sinnvoller (auch wenn Excel in Verbindung mit Power Query mittlerweile sehr interessante Alternativen bietet)

      Und danke für die Präzisierung hinsichtlich der sortierten Tabelle, das ist natürlich völlig richtig.

      Schöne Grüße,
      Martin

  • Avatar-Foto
    Christian

    Hallo Martin,

    Vielen Dank für diesen Beitrag. Du hast mir sehr geholfen!
    Meine 50MB Excel kann endlich innerhalb weniger Sekunden verarbeitet und gespeichert werden.

    Gruß,
    Chrisitan

  • Avatar-Foto
    Wolfram Scharnhorst

    Hi Martin, schlicht – einfach – überzeugend. EXCEL ist wirklich nicht unterzukriegen. Vielen Dank für Deinen Artikel, hat mir sehr geholfen. Viele Grüsse Wolfram

  • Avatar-Foto
    René

    Geht das auch mit SVERWEIS mit mehreren Bedingungen?
    Bsp.: {=SVERWEIS(F5&G5&H5;WAHL({1.2.3};A:A&B:B&C:C;D:D);2;0)}

    • Avatar-Foto
      Martin Weiß

      Hallo Rene,

      ich habe es nicht ausprobiert, aber vermutlich ja. Voraussetzung wäre auch hier, dass die zu durchsuchende Tabelle sortiert ist – in diesem Fall aber eben nach allen drei Spalten (um bei deinem Beispiel zu bleiben).

      Du kannst es ja mal testen und uns hier deine Erkenntnisse mitteilen.

      Schöne Grüße,
      Martin

  • Avatar-Foto
    Günther Grund

    Hallo Martin,

    ich bin eben über deinen SVerweis mit „Raketenantrieb“ gestolpert und mir ist nicht so recht klar, warum das eine Beschleunigung bringen soll? Deine Aussage „Die Funktion muss die komplette Tabelle bis zum Ende durchsuchen und ist daher (bei großen Tabellen) ziemlich langsam.“ ist ja nur dann zutreffend, wenn der gesuchte Wert nicht vorhanden ist. Im Normalfall sucht auch der „Schnecken-SVerweis“ nur bis zur ersten Fundstelle, eigentlich ganz genauso wie der „Raketen-SVerweis“. Da dein „Raketen-SVerweis“ aber zwei Mal sucht, müsste er eigentlich doppelt so langsam sein wie der „Schnecken-SVerweis“.

    Also habe ich es ausprobiert:
    – Stammdatenliste mit 5.000 Zeilen und zwei Spalten: KdNr (Zahl) und KdName (Text)
    – SVerweis-Liste mit 500.000 Zeilen und zwei Spalten: KdNr (Zahl) und KdName (SVerweis-Formel)

    Bei meinem aktuellen Excel 365 waren der „Schnecken-SVerweis“ und dein „Raketen-SVerweis“ näherungsweise gleich schnell (Neuberechnung nach Filtern in der SVerweis-Spalte ca. 4 sek).

    Mir ist dann noch die Idee gekommen, dass der „Raketen-SVerweis“ deswegen schneller sein könnte, weil er nicht zeilenweise bis zur Fundstelle sucht, sondern die aufsteigende Sortierung nutzt, um sich der Fundstelle sprungweise zu nähern (wie eine Suche in indizierten Datenbanken-Feldern). Dies würde den von Dir gemessenen Geschwindigkeitsvorteil erklären können.
    Deshalb habe ich dem „Schnecken-SVerweis“ dann die Stammdatenliste nach KdName sortiert, damit er nicht vielleicht auch die KdNr-Sortierung (wenn sie denn schon da ist) auf diese Weise nutzt. War Fehlanzeige – „Schnecken-SVerweis“ ist immer noch genauso schnell, wie der „Raketen-SVerweis“.
    Als weitere Idee könnte der von mir natürlich aktivierte Tabellenentwurf für den nicht vorhandenen Performanceunterschied verantwortlich sein. Also habe ich auch diesen noch deaktiviert. Weiterhin gleiche Performance …

    Einzige verbleibende Idee ist noch, dass der Trick bei aktuellen Excel-Versionen nichts mehr bringt, weil Microsoft die interne Performance-Optimierung schon „zu“ gut hinbekommen hat.

    Wie siehst Du das? Ergibt sich bei Dir mit dem Trick noch ein Geschwindigkeitsvorteil?

    Viele Grüße
    Günther

    • Avatar-Foto
      Günther Grund

      Nachtrag:
      Ich habe es jetzt auch mit alten Excel-Versionen ausprobiert und konnte unverändert keinen Performance-Vorteil von deiner Variante reproduzieren. Im Gegenteil: Bei den aktuellen Versionen hatte ich mehrmals das Gefühl, dass der „Schnecken-SVerweis“ sogar einen Tick schneller ist. Bei Excel 2013 (und älter) war es das dann definitiv so:

      Excel 365 (V2209, 64bit): kein Unterschied (alle Tests 2 bis 4 Sekunden)
      Excel 2021 (V2209, 64bit): kein Unterschied (detto)
      Excel 2019 (V2209, 32bit): kein Unterschied (detto)
      Excel 2016 (V2209, 32bit): kein Unterschied (detto)
      Excel 2013 (32bit): „Schnecken-SVerweis“ beim Filtern ca. 6x schneller als „Raketen-SVerweis“
      Excel 2010 (32bit): „Schnecken-SVerweis“ beim Filtern ca. 4x schneller als „Raketen-SVerweis“
      Excel 2007 (32bit): „Schnecken-SVerweis“ beim Filtern ca. 5x schneller als „Raketen-SVerweis“

      Habe ich da etwas anders gemacht als von Dir vorgesehen oder etwas falsch verstanden?
      Würde mich über eine Rückmeldung freuen.

      Zur Vollständigkeit:
      Ich habe eine halbe Million SVerweis-Formeln erstellt, die jeweils auf eine 5.000 Zeilen lange Stammdatenlisten zugreifen. Die Performance teste ich einerseits dadurch, dass ich auf die SVerweis-Spalte ein Filterkriterium anwende bzw. wieder entferne oder die SVerweis-Formeln (bis auf eine) lösche und neu ausfülle. Es ist jeweils nur die eine Mappe geöffnet.

      Die Formeln lauten konkret:
      „Schnecken-SVerweis“:
      =SVERWEIS([@KdNr];Tabelle1!$A$5:$B$5004;2;0)
      „Raketen-SVerweis“:
      =WENN(SVERWEIS([@KdNr];Tabelle1;1)=[@KdNr];SVERWEIS([@KdNr];Tabelle1;2);#NV)

      • Avatar-Foto
        Martin Weiß

        Hallo Günther,

        danke für deine Kommentare und die ausführlichen Tests. Was ich bestätigen kann ist, dass in Excel 365 tatsächlich generell starke Verbesserungen an der Performance der SVERWEIS-Funktion umgesetzt wurden. Das erklärt aber nicht deine Messergebnisse bei den alten Versionen, die mich ebenfalls sehr überraschen und für die ich auch keine Erklärung habe.

        Wie gesagt, der damals von mir gemessene Performance-Vorteil beim „Raketen-SVERWEIS“ kommt nur dann zum Tragen, wenn die Tabelle sortiert ist. Bei unsortierten Tabellen ist der Raketen-SVERWEIS in jedem Fall langsamer, da ja zwei SVERWEISE durchlaufen werden. Und die Verbesserungen wurden mir von verschiedenen Anwendern auch bestätigt. Ich könnte mir höchstens noch vorstellen, dass vielleicht die Berechnungen innerhalb von formatierten Tabellen schneller sind als in normalen Listen? Aber das ist eine reine Spekulation.

        Ansonsten fällt mir leider auch keine Erklärung für deine Testergebnisse ein.

        Schöne Grüße,
        Martin

  • Avatar-Foto
    A. Schmidt

    Klasse! … Oder irgendetwas knackig Schnelles (soz. nicht mehr so ganz Volatiles) mit =INDEX(), =VERGLEICH(), =WAHL(), =ZEILE(), … die Sache mit der »formatierten Tabelle« usw. … Du machst das wirklich super, … erst ’mal ein herzliches Dankeschoen dafuer …!
    Arnd