ich habe eine Excel-Datei, die aus 3 Arbeitsblättern besteht. In meiner angehängten Excel-Datei habe ich drei Arbeitsblätter.
Einmal das Arbeitsblatt "Datenquelle", dann das Arbeitsblatt "Datenunterschied" und das Arbeitsblatt "Daten".
Alle drei Arbeitsblätter enthalten identische Spaltenbeschriftungen und -inhalte. Mein Ziel ist es, die Unterschiede zwischen Arbeitsblatt "Datenquelle" und "Daten" in das Arbeitsblatt "Datenunterschied" via ein VBA Makro zu übertragen.
Ausgangspunkt ist die Spalte Identifier - die Identifikationsnummer - der Daten.
In meinem Beispiel sieht man, dass im Arbeitsblatt "Daten" 4 Datensätze mit folgenden Identifikationsnummern aufgelistet sind:
6257 - 6258 - 6259 - 6260
Im Arbeitsblatt "Datenquelle" sind 6 Datensätze mit folgenden Identifikationsnummern aufgelistet:
6257 - 6258 - 6259 - 6260 - 6261 - 6268
Das Ziel wäre jetzt, falls im Arbeitsblatt "Daten" ein Datensatz nicht in der Datenquelle vorkommt, soll dies in das Arbeitsblatt "Datenunterschied" mit einem Makro geschrieben werden. In diesem Beispiel wären das die Datensätze "6261" & "6268". Hierbei sollen dann die ganze Zeile von Datensatz 6261 & 6268 in das Tabellenblatt "Datenunterschied" übertragen werden.
Hierfür hatte ich folgende Code ausprobiert, der aber nicht das gewünschte Ergebnis lieferte:
Sub Unterschied()
Dim CompareRange As Object, x As Object, y As Object
Dim lastRow As Integer
Set CompareRange = Sheets("Datenquelle").Range("H2:H" & Sheets("Datenquelle").Cells(Rows.Count, _
9).End(xlUp).Row)
For Each x In Sheets("Daten").Range("H2:H" & Sheets("Daten").Cells(Rows.Count, 9).End(xlUp). _
Row)
For Each y In CompareRange
If y x Then
lastRow = Sheets("Datenunterschied").Cells(Rows.Count, 1).End(xlUp).Row + 1
Sheets("Datenunterschied").Cells(lastRow, 9).Value = x.Value
Sheets("Datenunterschied").Cells(lastRow, 10).Value = x.Offset(0, 1).Value
Sheets("Datenunterschied").Cells(lastRow, 11).Value = x.Offset(0, 2).Value
Sheets("Datenunterschied").Cells(lastRow, 8).Value = x.Offset(0, -1).Value
Sheets("Datenunterschied").Cells(lastRow, 7).Value = x.Offset(0, -2).Value
Sheets("Datenunterschied").Cells(lastRow, 6).Value = x.Offset(0, -3).Value
Sheets("Datenunterschied").Cells(lastRow, 5).Value = x.Offset(0, -4).Value
Sheets("Datenunterschied").Cells(lastRow, 4).Value = x.Offset(0, -5).Value
Sheets("Datenunterschied").Cells(lastRow, 3).Value = x.Offset(0, -6).Value
Sheets("Datenunterschied").Cells(lastRow, 2).Value = x.Offset(0, -7).Value
Sheets("Datenunterschied").Cells(lastRow, 1).Value = x.Offset(0, -8).Value
End If
Next y
Next x
End Sub
Zum besseren Verständnis finden Sie die Excel-Datei unter folgendem Link:https://www.herber.de/bbs/user/137783.xlsm
Gruß
Nime