例子需求如下:用B列里的每个数据去跟A列里对比,如果在A列里能找到就把找到的值在A列里背景标为红色 并且放在C列里,照不到就把B列那个没找到的值标记背景黄色。
其方法为VBA代码或公式解决。
一、使用VBA代码的方法
提供两种代码,代码一如下:
Dim Arr, i&, d
Set d = CreateObject("Scripting.Dictionary")
Sheet1.Activate
Cells.Interior.ColorIndex = 0
Arr = [a1].CurrentRegion
For i = 1 To UBound(Arr)
If Arr(i, 1) <> "" Then d(Arr(i, 1)) = i
Next
For i = 1 To UBound(Arr)
If Arr(i, 2) <> "" Then
If d.exists(Arr(i, 2)) Then
Cells(d(Arr(i, 2)), 1).Interior.ColorIndex = 3: Cells(d(Arr(i, 2)), 3) = Arr(d(Arr(i, 2)), 1)
Else
Cells(i, 2).Interior.ColorIndex = 6
End If
End If
Next
代码二如下:
Application.ScreenUpdating = False
arr = ActiveSheet.UsedRange
a = 1
For j = 1 To UBound(arr)
If Len(arr(j, 2)) > 0 Then
Set Rng = Columns(1).Find(arr(j, 2), lookat:=xlWhole)
If Not Rng Is Nothing Then
Rng.Interior.ColorIndex = 3
Cells(a, 3) = arr(j, 2)
a = a + 1
Else
Cells(j, 2).Interior.ColorIndex = 5
End If
End If
Next j
Application.ScreenUpdating = True
二、使用公式及条件格式来解决
条件格式:
a列:=COUNTIF($B:$B,A1)>0 设置格式红色底色
b列:=COUNTIF($A:$A,B1)=0 设置格式黄色底色