01.02.2020, 19:56
Hallo,
ich habe folgendes Problem. Ich versuche in einer Tabelle einige Spalten auf Übereinstimmungen zu überprüfen und anschließend (bei Übereinstimmung) Werte zu kopieren. Der Code, den ich verwende, benötigt bei den vorhandenen 4000 Einträgen jedoch viel zu lange. Beiliegend (als Excel File) und unten ist ein Beispiel mit dem verwendeten Code. In der beiliegenden Excel-Datei sind lediglich ein paar Einträge zum Testen des Codes beinhaltet. Damit wird - wie oben erwähnt - die Übereinstimmung von Einträgen in einer Tabelle überprüft und bei Übereinstimmung der Einträge werden gewisse Werte der jeweiligen Zeile in die jeweils andere Zeile kopiert.
Wer könnte mir zu diesem Code eine Alternative weitergeben, der schneller ist und bei einigen Tausend Einträgen anwendbar wäre. Eventuell lässt sich auch der angegebene Code noch beschleunigen.
Vielen Dank für Eure Mithilfe!
ich habe folgendes Problem. Ich versuche in einer Tabelle einige Spalten auf Übereinstimmungen zu überprüfen und anschließend (bei Übereinstimmung) Werte zu kopieren. Der Code, den ich verwende, benötigt bei den vorhandenen 4000 Einträgen jedoch viel zu lange. Beiliegend (als Excel File) und unten ist ein Beispiel mit dem verwendeten Code. In der beiliegenden Excel-Datei sind lediglich ein paar Einträge zum Testen des Codes beinhaltet. Damit wird - wie oben erwähnt - die Übereinstimmung von Einträgen in einer Tabelle überprüft und bei Übereinstimmung der Einträge werden gewisse Werte der jeweiligen Zeile in die jeweils andere Zeile kopiert.
Wer könnte mir zu diesem Code eine Alternative weitergeben, der schneller ist und bei einigen Tausend Einträgen anwendbar wäre. Eventuell lässt sich auch der angegebene Code noch beschleunigen.
Vielen Dank für Eure Mithilfe!
Code:
Sub Beispiel()
With Application
.ScreenUpdating = False
.Calculation = xlCalculationManual
.EnableEvents = False
End With
Dim LoL_1 As Long
Dim LoL_2 As Long
Dim x1 As Long
Dim x2 As Long
Dim ws1 As Worksheet
Set ws1 = Worksheets("Tabelle1")
Dim ws2 As Worksheet
Set ws2 = Worksheets("Tabelle1")
With Worksheets("Tabelle1")
LoL_1 = ws1.Cells(Rows.Count, "A").End(xlUp).Row
LoL_2 = ws2.Cells(Rows.Count, "A").End(xlUp).Row
For x1 = 1 To LoL_1
For x2 = 1 To LoL_2
If ws2.Range("E" & x2) = ws1.Range("J" & x1) And ws2.Range("A" & x2) = ws1.Range("A" & x1) And ws2.Range("C" & x2) = ws1.Range("H" & x1) And ws2.Range("I" & x2) <> "" Then
ws1.Range("K" & x1) = ws2.Range("A" & x2)
ws1.Range("L" & x1) = ws2.Range("C" & x2)
End If
Next
Next
End With
With Application
.ScreenUpdating = True
.Calculation = xlCalculationAutomatic
.EnableEvents = True
End With
End Sub