首页 > 解决方案 > 比较不同工作表上的相同范围

问题描述

我有一个包含多张工作表(表 1、2...等)和“主”表的工作簿。我需要从 A:C 列中选择一个范围,直到它遇到具有值 (tva) 的行(包括那些行)。我想比较从 Master 到其他工作表的范围,并突出显示差异。 示例图像例如,主表具有 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

标签: vbacomparerange

解决方案


您可以尝试以下代码,虽然它没有覆盖其他列,但小调整只需要检查直到 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

推荐阅读