Da ist SQL ganz gut geeignet, erledigt Dir das Schleifen schön und elegant, dazu noch zügig.
a) Erstelle eine Arbeitsmappe
b) Bereits bekannte Datensätze stehen in Tabelle1
c) Die in Tabelle1 vermeintlich unbekannten Datensätze stehen in Tabelle2
d) Erstelle ein drittes Arbeitsblatt; werden durch nachfolgendes Beispiel die gesuchten Datensätze reingeschrieben
e) Schreibe folgenden Code in ein allgemeines Modul
f) Speichere die Arbeitsmappe mit dem Datentyp XLSM ab und führe folgenden Code dann aus
Dim sSQL As String
Dim rs As Object
'*** Die Abfrage beider Arbeitsblätter inkl Bedingung
sSQL = "SELECT Tab2.SpalteA, Tab2.SpalteB FROM `Tabelle2$` as TAB2 left outer join (SELECT * FROM `Tabelle1$`) AS TAB1 ON TAB2.SpalteA = TAB1.SpalteA Where Tab1.SpalteA is null"
'*** Das nötige ADODB.Recordset-Object
Set rs = CreateObject("ADODB.Recordset")
'*** die Ausführung
rs.Open sSQL, "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0 Xml"""
'*** Das Schreiben der Ergebnismenge in Blatt 3
Worksheets(3).Range("A1").CopyFromRecordset rs
'*** typisches Schließen des Objectes
rs.Close
'*** Aufräumen
Set rs = Nothing
Hinweis:
Über etwige Fehlerquellen und deren Behandlung musste Dich noch kümmern.
|