Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1564to1568
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
SVerweis vs Vlookup
02.07.2017 15:33:49
Jan
Hallo zusammen,
ich habe 2 Tabellen mit jeweils ca. 20000 Zeilen. Ich möchte gerne Daten in der ersten Tabelle aus der zweiten ergänzen.
Ich habe es mittels VBA so gelöst:
table1 = Worksheets(1).Range("AF2:AF20069")
table2 = Worksheets(2).Range("A2:G29835")
Index_Target = 2
For Each cl In table1
Worksheets(1).Cells(Index_Target, 6) = Application.WorksheetFunction.VLookup(cl,table2, 7, False)
Index_Target = Index_Target + 1
Next cl

Das Ganze macht auch was es soll, nur sehr langsam. Es dauert etliche Minuten.
Wenn ich jetzt das Selbe mit einem SVerweis mache, dauert das nur wenige Sekunden.
Kann mir jemand sagen, warum das so ist, bzw. was ich falsch mache?
Vom Gefühl her würde ich ja sagen, müsste das beides ähnlich lange dauern.
Danke schonmal für eure Mühe
Jan

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: SVerweis vs Vlookup
02.07.2017 15:38:36
Hajo_Zi
Hallo Jan,
ich glaube das sind 2 unterschiedliche Sachen.
Mit Code trägst Du den Wert ein und bei jedem Wert muss in die Tabelle geschaut werden.
Beim anderen trägst Du nur die Formel ein.
Machst Du das auch in VBA ohne For Next geht es auch schneller. Nur mal meine Vermutung.

Ich gebe keinen Dank für eine Rückmeldung, da ich durch solche Beiträge nicht meine Beitragszahl erhöhen muss.
Rückmeldung ist ja in der Heutigen Zeit nicht üblich und die wenigen die eine Rückmeldung geben, mögen mir das verzeihen, das kein Danke für eine Rückmeldung kommt.
Anzeige
AW: SVerweis vs Vlookup
02.07.2017 20:30:56
Werner
Hallo Jan,
versuch es mal so. Dabei wird die SVERWEIS-Formel in einem Rutsch in den kompletten Bereich eingetragen und dann die Formel durch ihre Werte ersetzt.
Public Sub SVerweis()
Dim loLetzteBlatt1 As Long
Dim loLetzteBlatt2 As Long
Dim table1 As Range
Dim table2 As String
With Worksheets(1)
'## letzte belegte Zeile Blatt 1, Spalte AF (32)
loLetzteBlatt1 = .Cells(.Rows.Count, 32).End(xlUp).Row
'## Bereich definieren von F2 bis F letzte belegte Zeile
Set table1 = .Range(.Cells(2, 6), .Cells(loLetzteBlatt1, 6))
End With
With Worksheets(2)
'## letzte belegte Zeile Blatt 2, Spalte A (1)
loLetzteBlatt2 = .Cells(.Rows.Count, 1).End(xlUp).Row
'## Bereich A2 bis G letzte belegte Zeile in Variable schreiben
table2 = .Range(.Cells(2, 1), .Cells(loLetzteBlatt2, 7)).Address
End With
'## SVERWEIS-Formel in den Bereich table1 schreiben
table1.FormulaLocal = "=SVERWEIS(AF2;Tabelle2!" & table2 & ";7;FALSCH)"
'## Formel durch Werte ersetzen
table1.Value = table1.Value
End Sub
Gruß Werner
Anzeige
Feedback ist wohl ein Fremdwort. o.w.T.
08.07.2017 01:42:30
Werner
AW: Feedback ist wohl ein Fremdwort. o.w.T.
08.07.2017 09:56:30
Jan
Hallo,
Erstmal Danke für die Vorschläge.
Leider hatte ich noch keine Zeit sie auszuprobieren.
Ich hoffe das ich es in den nächsten Tagen testen kann und werde dann auf jeden Fall ein Feedback dazu geben.
Danke
Jan

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige