ich muss Daten auf mehrfache weise abgleichen. Da ich sehr viele Daten verarbeiten muß, lese ich diese zunächst in eine Array ein. Nun möchte ich, wenn beim ersten Abgleich daten gefunden wurden, diese aus dem Array gelöscht werden, so daß für den darauffolgenden Abgleich nur noch die "offenen" Daten im Array enthalten sind.
So sieht mein Code bisher aus:
Sub datenabgleich()
' ARRAY01 '
' Variable für Array defninieren '
Dim ARR01DAT As Variant
Dim ARR01ZMAX As Long
Dim ARR01SMAX As Long
' maximale Anzahl Spalten für das Array festlegen '
ARR01SMAX = 10
' Ermittlung Anzahl Zeilen für Array '
tbl02.Activate
Range("A1").End(xlDown).Activate
ARR01ZMAX = ActiveCell.Row
Application.Goto Reference:=Range("A1"), Scroll:=True
' Array mit Daten befüllen '
With tbl02
ARR01DAT = .Range(.Cells(1, 1), .Cells(ARR01ZMAX, ARR01SMAX))
End With
' ARRAY02 '
' Variable für Array defninieren '
Dim ARR02DAT As Variant
Dim ARR02ZMAX As Long
Dim ARR02SMAX As Long
' maximale Anzahl Spalten für das Array festlegen '
ARR02SMAX = 10
' Ermittlung Anzahl Zeilen für Array '
tbl03.Activate
Range("A1").End(xlDown).Activate
ARR02ZMAX = ActiveCell.Row
Application.Goto Reference:=Range("A1"), Scroll:=True
' Array mit Daten befüllen '
With tbl03
ARR02DAT = .Range(.Cells(1, 1), .Cells(ARR02ZMAX, ARR02SMAX))
End With
' Datenabgleich 1 und Ausgabe bei Übereinstimmung '
NFR = 2
For i = 2 To ARR01ZMAX Step 1
For y = 2 To ARR02ZMAX Step 1
If ARR01DAT(i, 10) = ARR02DAT(y, 10) Then
tbl09.Cells(NFR, 1).Value = ARR01DAT(i, 1)
tbl09.Cells(NFR, 2).Value = ARR01DAT(i, 2)
tbl09.Cells(NFR, 3).Value = ARR01DAT(i, 3)
tbl09.Cells(NFR, 4).Value = ARR01DAT(i, 4)
tbl09.Cells(NFR, 5).Value = ARR01DAT(i, 5)
tbl09.Cells(NFR, 6).Value = ARR01DAT(i, 6)
tbl09.Cells(NFR, 7).Value = ARR01DAT(i, 7)
tbl09.Cells(NFR, 8).Value = ARR01DAT(i, 8)
tbl09.Cells(NFR, 9).Value = ARR02DAT(y, 8)
NFR = NFR + 1
End If
Next y
Next i
' Datenableich 2 und Ausgabe bei Übereinstimmung '
End Sub
Was muß ich jetzt an welcher Stelle machen, damit die gefundenen Datensätze aus dem Array (hier ARR01) gelöscht werden?Und kann ich dann beim nächsten Datenabgleich wieder bis ARR01ZMAX suchen, weil ARR01ZMAX ist dann ja eigentlich kürzer?