首页 > 解决方案 > VBA - 比较两张工作表并突出显示更改

问题描述

我正在尝试比较两张纸。sheet 的结构完全一样 -> Sheet1 中的单元格 AD4 应该与 Sheet2 中的 AD4 相同,如果不是,则突出显示 AD4 单元格。只要数据存在,就应该这样做。

下面的代码不起作用,但它没有显示任何错误消息。

Sub CompareAndHighlightDifferences()
Dim w1 As Worksheet, w2 As Worksheet
Dim c As Range, a As Range
Set w1 = Sheets("2019 Project Detail")
Set w2 = Sheets("2019 Project Detail SOURCE")
With w1
  For Each c In .Range("AD4", .Range("AD" & Rows.Count).End(xlUp))
    Set a = w2.Columns(30).Find(c.Value, LookAt:=xlWhole)
    If Not a Is Nothing Then
      If .Cells(c.Row, c.Column).Value <> w2.Cells(a.Row, a.Column) Then
         .Cells(c.Row, c.Column).Font.Color = vbRed
      End If
    End If
  Next c
End With
End Sub

请问您有什么建议吗?

非常感谢!

- - - - - - - - - - -编辑 - - - - - - - - - - -

Sub CompareAndHighlightDifferences()
Dim w1 As Worksheet, w2 As Worksheet
Dim c As Range
Set w1 = Sheets("2019 Project Detail")
Set w2 = Sheets("2019 Project Detail SOURCE")

  For Each c In w1.Range("AD4", w1.Range("AD" & Rows.Count).End(xlUp))
    If w1.Cells(c.Row, c.Column).Value = w2.Cells(c.Row, c.Column).Value Then
       w1.Cells(c.Row, c.Column).Interior.Color = vbRed
    End If
  Next c

End Sub

标签: excelvba

解决方案


我会使用这样的东西:

Sub CompareAndHighlightDifferences()

Dim w1 As Worksheet, w2 As Worksheet

Set w1 = Sheets("2019 Project Detail")
Set w2 = Sheets("2019 Project Detail SOURCE")

With w1
    For Each cel In .UsedRange
        If cel.Value <> w2.Cells(cel.Row, cel.Column).Value Then cel.Font.Color = vbRed
    Next cel
End With

End Sub

编辑:如果您的工作表受到保护,您应该w1.Unprotect在开头和w1.Protect结尾添加。


推荐阅读