Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1856to1860
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

Performanceprobleme vs Sverweis

Performanceprobleme vs Sverweis
25.11.2021 10:52:36
Rick
Hallo Community,
ich bin noch ganz neu in der VBA Welt und bei meinem ersten Modul auf ein Problem gestoßen:
Ich möchte alle Zellen einer Spalte ("F" des Tabellenblattes "Ergebnis") mittels zb VLookup befüllen, dafür soll das Makro aus der Quelltabelle (Tab1) nur die befüllten Zellen der Spalte "BV" zum Abbgleich nutzen. Spalte C der Tabelle Tab1 gibt immer die maximale Zeilenanzahl, weshalb wir bei der Formel letzte Zeile Tab1 uns auf C beziehen. Im Auskommentiertem Feld: Habe es so versucht, aber es funktioniert nicht. Wie bekomme ich das realisiert? Da ich diese Funktion viele Spalten benötige, ist auch die Frage ob man es eventuell anders/ besser gestalten kann Zwecks Performance.
Sub Ergebnis_erstellen2()
'Objekt hinzufügen
Dim LetzteZeileTab1, LetzteZeileErgebnis, LetzteZeileSL As Long
'Objekt definieren
LetzteZeileTab1 = Worksheets("Tab1").Cells(Rows.Count, 3).End(xlUp).Row
LetzteZeileErgebnis = Worksheets("Ergebnis").Cells(Rows.Count, 1).End(xlUp).Row
LetzteZeileSL = Worksheets("SL").Cells(Rows.Count, 2).End(xlUp).Row
Worksheets("Ergebnis").Activate
'Spalte F erstellen
Cells(1, 6) = "SL"
Range("F2:F20000") = Application.WorksheetFunction.VLookup(Worksheets("Tab1").Range("BV2:BV20000"), Worksheets("SL").Range("A2:B30"), 2, False)
'funktioniert nicht: Range(Cells(2, 6), Cells(LetzteZeileErgebnis, 6)) = Application.WorksheetFunction.VLookup(Worksheets("Tab1").Range(Cells(2, 74),
Cells(LetzteZeileTab1, 74)), Worksheets("SL").Range(Cells(2, 1), Cells(LetzteZeileSL, 2)), 2, False)

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

Betreff
Datum
Anwender
Anzeige
AW: Performanceprobleme vs Sverweis
25.11.2021 11:22:55
Daniel
Hi
Wenn du in VBA mit Application.VLookUp arbeitet, kannst du damit immer nur einen Wert ermitteln, aber nicht viele gleichzeitig.
Hier müsstest du um Schleifen zu vermeiden, die Formel in die Zelle schreiben - das geht für viele Zellen gleichzeitig - und dann ggf die Formeln durch Werte ersetzen:

With Range(Cells(2, 6), Cells(LetzteZeileErgebnis, 6))
.FormulaR1C1 = "=Vlookup(Tab1!RC74,SL!R2C1:R" & LetzteZeileSL & "C2,2,False)"
.Formular = .Value
Ende With
Gruß Daniel
AW: Performanceprobleme vs Sverweis
29.11.2021 06:56:06
Rick
Hi Daniel, danke für diene Antwort. Ich habe deinen Code verwendet, auch wenn ich ihn nicht ganz verstehe bzw den Befehl nicht kenne. Aber egal.
Ich gehe das Makro mit F8 Schritt für Schritt durch und bei der Zeile:
.FormulaR1C1 = "=Vlookup(Tab1!RC74,SL!R2C1:R" & LetzteZeileSL & "C2,2,False)"
öffnet sich immer ein Fenster, in der ich eine Datei zum öffnen auswählen soll. Soll das so?
Tab1 und SL befinden sich ja in der gleichen Mappe wie das Sheet Ergebnis.
Auch seltsam finde ich, dass in den Zellen der ausgewählten Spalte jetzt folgender SVerweise steht:
=SVERWEIS(@Tab@1!$BV2;SL$A$2:$B$14;2;FALSCH)
Würde mich über weiter Tips freuen!
Anzeige
AW: Performanceprobleme vs Sverweis
29.11.2021 07:18:18
ralf_b

öffnet sich immer ein Fenster, in der ich eine Datei zum öffnen auswählen soll. Soll das so?
wahrscheinlich soll das nicht so. Da stimmt der Verweis nicht und Excel denkt : wenn die Datei/der Tab nicht auffindbar ist, gebe ich dem user die Möglichkeit diese auszuwählen.
AW: Performanceprobleme vs Sverweis
29.11.2021 07:55:11
Daniel
Genauso ist das.
Zelladresse oder Tabellenblattname falsch geschrieben.
Ggf müssen die Blattnamen auch in Hochkommas gesetzt werden.
Ich würde erstmal die Formel von Hand in die Zelle schreiben und das ganze mit dem Recorder aufzeichnen
Der Recorder zeichnet R1C1 auf, dh du siehst wie der String für die Formel aussehen muss und kannst FAS mit deinem String vergleichen.
Die von Hand eingegebene Formel sollte natürlich funktionieren.
Gruß Daniel
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige