【问题标题】:Compare Two Excel Sheets – Highlight Differences – Macro比较两个 Excel 工作表 – 突出差异 – 宏
【发布时间】:2021-11-30 04:30:20
【问题描述】:
Sub test()
Dim varSheetA As Variant
Dim varSheetB As Variant
Dim strRangeToCheck As String
Dim iRow As Long
Dim iCol As Long
Set varSheetA = Sheet1

strRangeToCheck = "A1:B65536"
' If you know the data will only be in a smaller range, reduce the size of the ranges above.
Debug.Print Now
varSheetA = Worksheets("Sheet1").Range(strRangeToCheck)
varSheetB = Worksheets("Sheet2").Range(strRangeToCheck) ' or whatever your other sheet is.
Debug.Print Now

For iRow = LBound(varSheetA, 1) To UBound(varSheetA, 1)
    For iCol = LBound(varSheetA, 2) To UBound(varSheetA, 2)
        If varSheetA(iRow, iCol) = varSheetB(iRow, iCol) Then
            ' Cells are identical.
            ' Do nothing.
        Else
            ' Cells are different.
            ' Code goes here for whatever it is you want to do.   
        End If
    Next iCol
Next iRow
End Sub

请找到上面的代码。 我需要突出显示不同的单元格。我试过如下所述的cmets问题没有解决。请任何人帮助我!

【问题讨论】:

标签: excel vba excel-formula


【解决方案1】:

varSheetA 是一个保存范围值的数组,它不知道工作表上的单元格。

(如果 varSheetA 应该是范围,那么您必须编写 set varSheetA = ... 加上将变量定义为范围)

worksheets("Sheet1").cells(iRow, iCol).color = vbRed

应该工作

顺便说一句:如果您发布代码本身而不是图片,我们更容易提供帮助 - 我们应该如何“获取代码”?

【讨论】:

  • 对不起,我尝试上传完整的,但没有上传。现在我更新了代码
【解决方案2】:

试试这个方法。

Sub CheckTwoSheetsAndHighlightDifferences()
    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

【讨论】:

    【解决方案3】:

    怎么样:

    varSheetA(iRow, iCol).Color = RGB(0,255,0)
    

    当您考虑到 255,0,0 是红色而 0,255,0 是绿色时,应该非常明显。

    【讨论】:

    • 感谢您的回复!我使用了上面的代码但不起作用。运行时错误“424”:需要对象
    • ...但它与您的代码在同一个循环中,它怎么可能不起作用?
    • 是的!这就是为什么我要搜索确切的问题在哪里。
    • 或者你可以从上面的图片中获取代码并尝试运行代码
    • @Dominique 无法工作,因为varSheetA 是一个值数组并声明为Variant,而valuse 没有.Color。那不是Range 对象。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-28
    • 1970-01-01
    相关资源
    最近更新 更多