【问题标题】:Highlight Duplicates between two sheets of 2 workbook突出显示 2 个工作簿的两个工作表之间的重复项
【发布时间】:2017-03-08 23:12:22
【问题描述】:

我正在创建一个宏来比较两个工作簿的工作表。如果在另一个工作簿的工作表中发现重复,我需要突出显示该行。到目前为止,我一直在搜索并找到代码,但我不确定如果在另一个工作簿的另一张表中找到重复项,我如何突出显示单元格/整行。下面是我的代码:

Sub CompareWorkbooks()

Dim varSheetA As Variant
Dim varSheetB As Variant
Dim strRangeToCheck As String
Dim iRow As Long
Dim iCol As Long



strRangeToCheck = "B2:D49"

Set wbkA = ActiveWorkbook 
Set varSheetA = wbkA.Worksheets("SAP").Range(strRangeToCheck)
Set wbkB = Workbooks.Open(FileName:="C:\Request Distribution\Reminder 20170302.xls")
Set varSheetB = wbkB.Worksheets("SAP").Range(strRangeToCheck)

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

       'What to put to hightlight the cell / entire row

    Else

    'Some msgbox to display that there are no duplicates between sheets of 2 workbooks

    End If
Next
Next

End Sub

【问题讨论】:

  • 如果您使用的是 office 2013 或更高版本,您可以使用内置的比较器来获得所需的结果,technet.microsoft.com/en-us/library/dn205148.aspx,重要提示:必须先安装 .NET Framework 4.0,然后才能使用电子表格比较。跨度>
  • 是 varSheetA(iRow, iCol).Interior.Color = RGB(127,187,199) 不起作用吗?
  • 感谢您的建议。我需要将它与 vba 一起使用,因为我会将它放在一个按钮中,这样用户只需单击一下即可。
  • 我尝试添加 varSheetA(iRow, iCol).Interior.Color = RGB(127,187,199)。但这给了我在线错误: For iRow = LBound(varSheetA, 1) To UBound(varSheetA, 1) 这是类型不匹配。可能是什么问题?
  • 现在它显示该行所需的对象:varSheetA(iRow, iCol).Interior.Color = RGB(127,187,199)

标签: excel vba


【解决方案1】:
Sub CompareWorkbooks()

Dim varSheetA As Range
Dim varSheetB As Range
Dim r As Range
Dim wbkA As Workbook
Dim rFind As Range

Set wbkA = ActiveWorkbook
With wbkA.Worksheets("SAP")
    .UsedRange.Interior.ColorIndex = xlNone
    Set varSheetA = .Range("B2", .Range("B" & Rows.Count).End(xlUp))
End With
Set wbkB = Workbooks.Open(Filename:="C:\Request Distribution\Reminder 20170302.xls")
Set varSheetB = wbkB.Worksheets("SAP").Range(varSheetA.Address)

For Each r In varSheetA
    Set rFind = varSheetB.Find(What:=r, LookAt:=xlWhole, MatchCase:=False, SearchFormat:=False)
    If Not rFind Is Nothing Then
        r.Interior.Color = RGB(127, 187, 199)
    End If
Next r

End Sub

【讨论】:

  • 感谢您的建议,我现在在线上遇到错误: For iRow = 1 To varSheetA.Rows.Count 并显示“需要对象”。
  • 您是否尝试过单步执行您的代码?您是否完全按照发布的方式使用我的代码 - 我也更改了声明?
  • 它现在正在工作。不知何故,它突出了范围 B2:D49。我只需要突出显示它从另一个工作簿的工作表中检测到的重复项。
  • 您的代码中没有任何内容可以突出显示任何内容。
  • 我添加了@Anil Kumar 建议的内容:varSheetA(iRow).Interior.Color = RGB(127, 187, 199)。我在之后添加了它: If varSheetA(iRow, iCol) = varSheetB(iRow, iCol) Then。但它只突出显示范围 B2:D49。我将如何将其放入代码中以突出显示在 2 个工作簿之间检测到的重复项?
猜你喜欢
  • 2014-10-04
  • 2015-11-10
  • 2021-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多