Hallo Forum,
mein erster Beitrag und gleich mit einem wahrscheinlich nicht sehr altäglichen Problem.
ich möchte zwei Tabelen miteinander vergleichen, eine Auswertung soll den passenden Datensatz dann in die 3. Tabelle Kopieren.
Bisher war mein Asatz dazu"quick & dirty", über If-abfragem jede zelle einzeln verglichen und dann die passenden Daten als Zelle kopiert und eingefügt. Klappt bei 350 Datensätzen sauber, bei 1500 (alleine in einer der Tabellen) aber nicht mehr ohne das der Prozessor heiß wird.
Jetzt wollte ich es Sauberer in einem Vektor / Matrize sammeln und dann auswerten, Die Matritze zu füllen klappt super, allerding vergleicht er sie nicht miteinander.
Hier die zu vergleichenden Daten:
-
PLZ
-
Ort
-
Straße
-
Hausnummer
Diese daten sind in beiden Tabellen gleich drin auch von der Formatierung her.
Code:
''Adressen abgleichen
Sub Abgleich_2()
''Variablen zuordnen
Dim n, nl, nm As Integer
Dim i, il, im As Integer
Dim z, za As Integer
Dim LetzteZeileVorgabe As Integer
Dim LetzteZeileSuche As Integer
Dim LetzteZeileAuswertung As Integer
Dim PostcodeV()
Dim PostcodeS()
Dim P, a, b As Integer
''Laufvariablen Definieren
n = 8
i = 2
z = 2
P = 100
Y = 0
'' Letzte Zeile der Vorgabetabelle
LetzteZeileVorgabe = ActiveSheet.Cells(65536, 1).End(xlUp).Row
nl = LetzteZeileVorgabe + 1
'' Letzte Zeile der Auswertung aus MBM
LetzteZeileSuche = Worksheets("Tabelle1").Cells(65536, 1).End(xlUp).Row
il = LetzteZeileSuche + 1
'' Letzte Zeile der Auswertungstabelle
LetzteZeileAuswertung = Worksheets("Auswertung").Cells(65536, 1).End(xlUp).Row
z = LetzteZeileAuswertung + 1
za = LetzteZeileAuswertung
''Neudimensonierung Matrix
nm = nl - 8
im = il - 2
ReDim PostcodeV(nm, 3)
ReDim PostcodeS(im, 3)
''Einlesen der zu suchenden Adressen
For n = 8 To nl
PostcodeV(Y, 0) = Array(ActiveSheet.Cells(n, 2).Value)
PostcodeV(Y, 1) = Array(ActiveSheet.Cells(n, 3).Value)
PostcodeV(Y, 2) = Array(ActiveSheet.Cells(n, 4).Value)
PostcodeV(Y, 3) = Array(ActiveSheet.Cells(n, 5).Value)
Y = Y + 1
Next
Y = 0
''Einlesen der zu vergleichenden Adressen
For i = 2 To il
PostcodeS(Y, 0) = Array(Worksheets("Tabelle1").Cells(i, 6).Value)
PostcodeS(Y, 1) = Array(Worksheets("Tabelle1").Cells(i, 7).Value)
PostcodeS(Y, 2) = Array(Worksheets("Tabelle1").Cells(i, 8).Value)
PostcodeS(Y, 3) = Array(Worksheets("Tabelle1").Cells(i, 9).Value)
Y = Y + 1
Next
MsgBox UBound(PostcodeV)
MsgBox UBound(PostcodeS)
For n = 0 To UBound(PostcodeV)
For i = 0 To UBound(PostcodeS)
Next
Next
''Pause alle 50 Datensätze für 2sekunden
If P = n Then
Application.Wait Now + TimeSerial(0, 0, 5) 'wartet 2 Sekunden
P = P + 100
End If
MsgBox nm
End Sub
Mein Ansatz hierzu spukt im Vergleich immer fehler aus, wie würdet ihr vorgehen? Pause ist noch aus dem alten Makro und ich brauche immer die Koplette Zeile.
Mfg der Frank
|