【发布时间】:2020-06-02 16:12:49
【问题描述】:
我目前正在处理一个由 3 张纸组成的 Excel 文件。三张纸由以下组成,首先是“Datenquelle”,其次是“Datenunterschied”,第三是“Daten”。
所有三个工作表都包含相同的列名和相似的数据。我想通过 VBA 宏将“Datenquelle”和“Daten”中数据的差异突出显示到“Datenunterschied”工作表中。
参考点应该是“标识符”列。
如您所见,“数据”表包含四个具有以下标识符编号的数据集:
6257 - 6258 - 6259 - 6260
“Datenquelle”表包含六个标识符号:
6257 - 6258 - 6259 - 6260 - 6261 - 6268
目标是所有未包含在工作表“Daten”中但包含在“Datenquelle”中的数据集都应通过 VBA 宏放入工作表“Datenunterschied”中。在我的示例中,那些将是标识符“6261”和“6268”之后的数据集。数据集“6261”和“6268”的整个单元格应转移到“Datenunterschied”。
我尝试关注宏,但没有产生正确的结果。
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
我在这里提供了数据:
https://www.herber.de/bbs/user/137783.xlsm
问候 卡尼姆
【问题讨论】: