【问题标题】:Compare the same range on different worksheets比较不同工作表上的相同范围
【发布时间】:2021-08-08 13:23:54
【问题描述】:

我有一个包含多个工作表(工作表 1、2...等)和“主”工作表的工作簿。我需要从 A:C 列中选择一个范围,直到它遇到具有值 (tva) 的行(包括那些行)。我想比较从 Master 到其他工作表的范围,并突出显示差异。 Sample image 例如主表在 A3 中的值为“m”。

这是我目前所拥有的。我对此很陌生,所以任何建议都值得赞赏:)

Sub comp()
 Dim ws As Worksheet
 Dim rngCell As Range
    For Each ws In ThisWorkbook.Worksheets
    ws.Activate
    rngCell = Columns("A:C").Resize(Columns("A:C").Find(What:="tva", After:=Range("A1"), LookIn:=xlValues, SearchDirection:=xlPrevious).Row)
    rngCell.Select
     For Each rngCell In ws.Range
             If Not rngCell = Worksheets("Master").Cells(rngCell.Row, rngCell.Column) Then
                rngCell.Interior.Color = vbYellow
             End If
       
    Next ws

 
 
End Sub

【问题讨论】:

  • 为什么 C 被突出显示,任何原因?
  • 因为当我将主表与其他表进行比较时,主表在 A3 上的值为“m”,而其他表在 A3 上的值为“c”,我需要突出显示。

标签: vba compare range


【解决方案1】:

你可以试试下面的代码,虽然它没有覆盖其他列,但是小调整只需要检查直到C列(col 3):

Sub comp()
Dim ws As Worksheet
Dim valuerow As Long, irow As Long

For Each ws In ThisWorkbook.Worksheets
    ws.Activate
    valuerow = Cells.Find(What:="tva", After:=Range("A1"), LookIn:=xlValues, SearchDirection:=xlPrevious).Row

    For irow = 1 To valuerow
    
        If ws.Cells(irow, 1).Value <> Worksheets("Master").Cells(irow, 1).Value Then
            ws.Cells(irow, 1).Interior.Color = vbYellow
        End If
    
        If ws.Cells(irow, 2).Value <> Worksheets("Master").Cells(irow, 2).Value Then
         ws.Cells(irow, 2).Interior.Color = vbYellow
        End If
    
    Next

Next

End Sub

【讨论】:

  • 非常感谢!对于 B 列和 C 列,我可以写“ws.Cells(irow, 3)”吗?
  • 是的,您可以通过将列值更改为 2,3 来重复 if 函数,然后将获得相同的结果。您的假设是正确的,您可以在工作表中执行以测试结果。查看我的编辑结果并投票或接受,如果有帮助:)
猜你喜欢
  • 2015-10-12
  • 2021-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-23
相关资源
最近更新 更多