您可以尝试下面给出的代码。
先决条件: 1)代码假定存在名为Sheet 1中,Sheet 2中和表Sheet 3
2工作簿三片)表Sheet 1和sheet2具有各10列以相同的标头。
下面的代码将Sheet2上的数据与基于列B的Sheet1上的数据进行比较,即如果在Sheet1的列B中发现Sheet2上列B的值,代码将比较两个列中的所有列的数据如果数据不匹配或不同,数据将被复制到Sheet3。
Sub CompareAndCopyUnMatchedData()
Dim ws1 As Worksheet, ws2 As Worksheet, ws3 As Worksheet
Dim x, y, z, dict1
Dim i As Long, j As Long
Dim str As String
Application.ScreenUpdating = False
Set ws1 = Sheets("Sheet1")
Set ws2 = Sheets("Sheet2")
Set ws3 = Sheets("Sheet3")
ws3.Cells.Clear
ws1.Range("A1:J1").Copy ws3.Range("A1")
x = ws1.Range("A1").CurrentRegion.Value
y = ws2.Range("a1").CurrentRegion.Value
Set dict1 = CreateObject("Scripting.Dictionary")
For i = 2 To UBound(x, 1)
dict1.Item(x(i, 2)) = x(i, 1) & "," & x(i, 2) & "," & x(i, 3) & "," & x(i, 4) & "," & x(i, 5) & "," & x(i, 6) & "," & x(i, 7) & "," & x(i, 8) & "," & x(i, 9) & "," & x(i, 10)
Next i
For i = 2 To UBound(y, 1)
If dict1.exists(y(i, 2)) Then
If dict1.Item(y(i, 2)) <> y(i, 1) & "," & y(i, 2) & "," & y(i, 3) & "," & y(i, 4) & "," & y(i, 5) & "," & y(i, 6) & "," & y(i, 7) & "," & y(i, 8) & "," & y(i, 9) & "," & y(i, 10) Then
str = y(i, 1) & "," & y(i, 2) & "," & y(i, 3) & "," & y(i, 4) & "," & y(i, 5) & "," & y(i, 6) & "," & y(i, 7) & "," & y(i, 8) & "," & y(i, 9) & "," & y(i, 10)
z = Split(str, ",")
ws3.Range("A" & Rows.Count).End(3)(2).Resize(1, 10).Value = z
End If
End If
Next i
Set dict1 = Nothing
Application.ScreenUpdating = True
End Sub
编辑: 如果你有兴趣,突出在Sheet2上的单元不与工作表Sheet1上相应的单元格匹配,您可以使用条件格式实现这一目标。 为此,从单元格A1开始选择Sheet2上的所有数据,并使用下面给出的公式为条件格式创建新规则,并根据您的选择设置格式。 因此,如果Sheet2!E10与Sheet1!E10不匹配,Sheet2!E10将按照您在条件格式中设置的格式高亮显示或格式化。用于条件格式
公式如下...
=A1<>Sheet1!A1
片1是主片和要在片材2进行检查。如果在工作表2中发现差异,则表示将工作复制到工作表3 – safwan
请添加一个示例(最好使用屏幕截图),以说明您确切需要的内容。 – jrook
请添加您已经创建的代码或公式以解决您的任务,并详细说明他们为什么不能为您工作。 – Jeeped