比较两个工作表和突出显示差异

时间:2016-05-03 13:14:57

标签: excel vba excel-vba excel-2013

我有两个包含相同数据点的工作表。我需要将Sheet1(有效数据)与Sheet2进行比较,并通过将单元格颜色更改为红色来查看Sheet2上的更改内容。我试过这个宏,但是它画了一切,而不仅仅是不同的细胞。下面是显示一小部分数据的图像,实际上每个工作表上大约有3K行 Image1 Image2

这就是我尝试的语法(由于几乎突出显示所有内容而无效)

Dim mycell As Range
Dim mydiff As Integer
Dim shtSheet1 As String
Dim shtSheet2 As String

shtSheet2 = "Sheet2"
shtSheet1 = "Sheet1"

For Each mycell In ActiveWorkbook.Worksheets(shtSheet2).UsedRange
  If Not mycell.Value = ActiveWorkbook.WOrksheets(shtSheet1).Cells(mycell.Row, mycell.Column).Value Then
    mycell.Interior.Color = vbRed
    mydiffs = mydiffs+1
  End If
Next

修改
下面的建议仍然会产生不准确的结果,所以我将几个值复制/粘贴到记事本中进行比较,我发现一个表后面有一些随机空格,这将导致Sheet1到Sheet2的数据永远不会相同。

VBA是否有可以添加的TRIM()功能/功能,因此数据末尾的随机空格在比较中无关紧要?

3 个答案:

答案 0 :(得分:2)

为什么不在Sheet2中尝试条件格式?公式可能是

= A1<>!Sheet 1中A1

并在格式化下将填充颜色设置为红色。

答案 1 :(得分:0)

尝试使用以下

Sub checked()
    Dim mycell As Range
    Dim mydiff As Integer
    Dim shtSheet1 As Worksheet
    Dim shtSheet2 As Worksheet
    Set shtSheet1 = Worksheets("Sheet1")
    Set shtSheet2 = Worksheets("Sheet2")
    For Each mycell In shtSheet2.UsedRange
      If Not mycell.Value = shtSheet1.Cells(mycell.Row, mycell.Column).Value Then
        mycell.Interior.Color = vbRed
        mydiffs = mydiffs + 1
      End If
    Next
End Sub

答案 2 :(得分:0)

您的答案似乎已在此处提供: Find the differences between 2 Excel worksheets? 您正在寻找Compare_excel或其他一些外部Excel差异。

如果您的列数较少,您可能需要在其中一个表的另一列中尝试类似“= Sheet1!A1 = Sheet2!A1”的内容。然后,您可以过滤FALSE条目。