如何解决如何比较两个工作簿中所有定义的名称?
我需要打开两个定义相同但范围不同的工作簿,并在其中一个工作簿中突出显示每个命名范围的内容差异。
我使用附加的代码将一本工作簿上的硬编码范围与两张工作表进行比较。
Private Sub HighlightDifferences()
Dim setone As Range
Dim setTwo As Range
Set setone = Sheets("Sheet1").Range("Ongoing_Activities")
Set setTwo = Sheets("Sheet1 (2)").Range("Ongoing_Activities")
'REMOVE THE COLOR FILL
setone.Interior.ColorIndex = xlNone
For Each cellitem In setone
If Not StrComp(cellitem,cellitem2,vbBinaryCompare) = 0 Then
cellitem.Interior.ColorIndex = 6
End If
For Each cellitem2 In setTwo
If StrComp(cellitem,vbBinaryCompare) = 0 Then
cellitem.Interior.ColorIndex = 0
End If
Next cellitem2
Next cellitem
End Sub
解决方法
请尝试下一个代码:
Sub compareNamesTwoWorkbooks()
Dim wb1 As Workbook,wb2 As Workbook,N1 As Name,N2 As Name,i As Long,j As Long
Dim rngN1 As Range,rngN2 As Range,boolFound As Boolean
Set wb1 = Workbooks("first workbook.xlsx")
Set wb2 = Workbooks("second workbook.xlsx")
For Each N1 In wb1.Names
For Each N2 In wb2.Names
If N1.RefersTo = N2.RefersTo Then
Set rngN1 = Application.Evaluate("'[" & wb1.Name & "]" & _
Replace(Replace(N1.RefersTo,"=",""),"!","'!"))
Set rngN2 = Application.Evaluate("'[" & wb2.Name & "]" & _
Replace(Replace(N2.RefersTo,"'!"))
rngN1.Interior.ColorIndex = xlNone: 'rngN1.Parent.Activate: Stop
For i = 1 To rngN1.rows.count
For j = 1 To rngN1.Columns.count
If Not StrComp(rngN1.cells(i,j).Value,_
rngN2.cells(i,vbBinaryCompare) = 0 Then
rngN1.cells(i,j).Interior.ColorIndex = 6
End If
Next j
Next i
boolFound = True: Exit For
End If
Next N2
If Not boolFound Then Debug.Print "Names """ & N1.Name & _
""" could not be found in workbook """ & wb2.Name
boolFound = False
Next N1
End Sub
请注意使用您的真实姓名来定义 wb1
和 wb2` 工作簿。当然,它们必须是开放的。如果需要,它们也可以由程序打开。
测试后,一些反馈将不胜感激...
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。