Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1844to1848
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA SVERWEIS 2 Kriterien beschleunigen

VBA SVERWEIS 2 Kriterien beschleunigen
17.09.2021 16:09:20
Oli__
Hallo zusammen,
ich habe einen funktionierenden VBA-Code, dessen Durchlaufzeit ich gerne beschleunigen würde. Dabei geht es mir um folgenden Ausschnitt, welcher der größte Zeitfresser ist, da die zu durchsuchende Excel-Datei bis zu 100.000 Zeilen haben kann...
Im Reiter "Analyse" befinden sich rund 1.000 Einträge, für die ich einen Wert aus wb1 benötige. Die Herausforderung ist, dass in "Analyse" der Suchparameter in der Spalte A steht (z.B. A03040.11.30.50.102). In wb1 muss ich diesen allerdings aus den Spalten A (z.B. A030) und D (z.B. 40.11.30.50.102) zusammensetzen. Das Ergebnis kommt dann aus Spalte P und wird in "Analyse" in Spalte r geschrieben.

Dim a As Integer 'Zeilennummer in Reiter Analyse
Dim r As Integer 'Spaltennummer in Reiter Analyse
a = 2
r = 10
Set wb1 = ActiveWorkbook 'Datei in der die Werte gesucht werden
Do Until IsEmpty(wb1.Sheets("Analyse").Cells(a, 1))
If IsError(Evaluate("=LOOKUP(2,1/(A:A&D:D=""" & wb1.Sheets("Analyse").Cells(a, 2) & wb1.Sheets("Analyse").Cells(a, 4) & """),P:P)")) Then
wb1.Sheets("Analyse").Cells(a, r) = 0 'Statt #NV schreibe 0
Else
wb1.Sheets("Analyse").Cells(a, r) = Evaluate("=LOOKUP(2,1/(A:A&D:D=""" & wb1.Sheets("Analyse").Cells(a, 2) & wb1.Sheets("Analyse").Cells(a, 4) & """),P:P)")
End If
a = a + 1
Loop
Hat jemand einen Tipp für mich, wie ich dieses Prozedere beschleunigen kann? Habe schon einiges zu Index Match und auch zum 4. Parameter des SVERWEIS gelesen, bekomme es aber in VBA nicht umgesetzt.
Ich wäre euch sehr dankbar!!
VG
Oli__

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA SVERWEIS 2 Kriterien beschleunigen
17.09.2021 16:49:53
Daniel
Hi
bei der Datenmenge hilft nur der SVerweis mit 4. Parameter = WAHR und der Sortierung der Daten nach der ersten Spalte der Suchmatrix.
wenn das in der Liste noch nicht gegeben ist, musst du das eben einfügen (geht ja per Makro schnell und einfach)
also Spalte einfügen, dort Formel einfügen die den Wert aus den alten Spalten A und D zu einem Wert zusammensetzt , Liste sortieren und dann den SVerweis als Formel in dieser Form in die Zellen einfügen:

=Wenn(SVerweis(Wert;Matrix;1;Wahr)=Wert;SVErweis(Wert;Matrix;Spalte;Wahr);"")
Gruß Daniel
Anzeige
AW: VBA SVERWEIS 2 Kriterien beschleunigen
17.09.2021 21:22:55
Oli__
Hallo Daniel,
vielen Dank für Deine Antwort! Ich habe Deinen Hinweis versucht wie folgt umzusetzen:

wb1.Sheets("Analyse").Cells(a, r) = Evaluate("=Wenn(SVerweis(" & wb1.Sheets("Analyse").Cells(a, 2) & ";WAHL({1.2};A:A&D:D;P:P);1;Wahr)=" & wb1.Sheets("Analyse").Cells(a, 2) & ";SVERWEIS(" & wb1.Sheets("Analyse").Cells(a, 2) & ";WAHL({1.2};A:A&D:D;P:P);2;1);0)")
Das liefert mir allerdings einen #WERT-Fehler, den ich noch nicht so recht nachvollziehen kann.
Was mache ich falsch?
Vielen Dank!
Oli__
Anzeige
AW: VBA SVERWEIS 2 Kriterien beschleunigen
17.09.2021 21:30:51
Oli__
Ohje, ich habe eine Vermutung... Die Tabelle ist zuerst nach Spalte D und danach nach Spalte A sortiert. Das ist aber sicherlich nicht das gleiche, wie wenn man nach den aus A und D zusammengesetzten Werten sortieren würde. Ist da was dran? ;-)
AW: VBA SVERWEIS 2 Kriterien beschleunigen
17.09.2021 21:53:54
Daniel
Du hast nicht nichts von dem was ich beschrieben habe, umgesetzt.
AW: VBA SVERWEIS 2 Kriterien beschleunigen
20.09.2021 16:37:11
Oli__
Hallo Daniel,
bitte entschuldige! Ich habe mich komplett auf die Formel konzentriert und Deine Hinweise im Text nicht richtig erfasst. Da war das Hirn schon etwas müde. ;)
Durch Deinen Tipp hat sich die Durchlaufzeit meines Makros von ca. 2 Stunden auf unter 2 Minuten reduziert. Dafür danke ich Dir sehr!!
VG
Oli__
Anzeige
AW: VBA SVERWEIS 2 Kriterien beschleunigen
20.09.2021 16:45:27
Daniel
Wer lesen kann, ist im Vorteil.
Bzw, befüllst du noch jede Zelle einzeln per Schleife?
Wenn ja, denk mal drüber nach, die Formel in alle betroffenen Zellen gleichzeitig zu schreiben
Gruß Daniel

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige