我是这里的新手,还是VBA中的新手。
我有两个要比较的工作表。
比方说,
但是sheet2中DWG和SYM的列位置并不总是相同,因此首先我需要在比较之前找到列的位置。然后突出显示比较。
还请注意,工作表具有数千行数据和多列。但是只需要比较两列即可。
这是工作代码:
Sub LookForMatches()
Dim rng1 As Range, rng2 As Range, c1 As Range, c2 As Range
Dim rng3 As Range, rng4 As Range, c3 As Range, c4 As Range
'set ranges
Set rng1 = Sheets("datax").Range("C5", Sheets("datax").Range("C" & Rows.Count).End(xlUp))
Set rng2 = Sheets("datay").Range("AC4", Sheets("datay").Range("AC" & Rows.Count).End(xlUp))
Set rng3 = Sheets("datax").Range("F5", Sheets("datax").Range("F" & Rows.Count).End(xlUp))
Set rng4 = Sheets("datay").Range("AH4", Sheets("datay").Range("AH" & Rows.Count).End(xlUp))
'reset colour
rng1.Interior.Color = 16777215
rng2.Interior.Color = 16777215
rng3.Interior.Color = 16777215
rng4.Interior.Color = 16777215
'loop values in range
For Each c1 In rng1
If Not c1.Interior.ColorIndex = 16777215 And c1 <> "" And c1 <> 0 Then
For Each c2 In rng2
If c1 = c2 And c2.Address <> c1.Address Then
c1.Interior.Color = RGB(255, 255, 0)
c2.Interior.Color = RGB(255, 255, 0)
End If
Next c2
End If
Next c1
'loop values in next range
For Each c3 In rng3
If Not c3.Interior.ColorIndex = 16777215 And c3 <> "" And c3 <> 0 Then
For Each c4 In rng4
If c3 = c4 And c4.Address <> c3.Address Then
c3.Interior.Color = RGB(255, 255, 0)
c4.Interior.Color = RGB(255, 255, 0)
End If
Next c4
End If
Next c3
MsgBox ("Checking Done")
Application.Goto Sheets("datay").Range("AA1"), True
End Sub
但是sheet2的列位置已定义。 但是,由于列的位置是变化的,因此不应基于列号而是根据标题名称来定义它。
非常感谢您。
答案 0 :(得分:0)
我不明白您为什么使用VBA进行此操作:我创建了两列,即A:A和B:B,并且根据它们在A:A列中的存在情况使用了条件格式对单元格进行着色这个公式:
=IFNA(MATCH(B2;$A$2:$A$4;0);FALSE) // for colouring if found
=NOT(IFNA(MATCH(B2;$A$2:$A$4;0);FALSE)) // for colouring otherwise if not found