我正在尝试编写 Excel VBA 代码,该代码将循环遍历列中的数据并检查值是否存在于另一张工作表的列中。我这样做是为了验证输入的数据是否来自值列表。如果值列表中不存在数据,我想将单元格的背景颜色设置为红色。数据未输入到 Excel 中,因此使用数据验证列表不是一种选择。我正在验证的列中的某些值可能为空,这没问题,但我想确保它检查所有有值的行。
这是我目前拼凑起来的,但它正在改变顶行的颜色,而不是沿着第 I 列向下改变。
Option Explicit
Sub Test()
Dim Rng As Range
Dim i As Long
Dim LastRow As Long
Set Rng = Worksheets("Lookups").Range("AC2:AC" & Range("AC" & Rows.Count).End(xlUp).Row)
Application.ScreenUpdating = False
With Worksheets("COMPANY")
LastRow = .Cells(.Rows.Count, "I").End(xlUp).Row
For i = 1 To LastRow
If Not IsError(Application.Match(.Range("I" & i).Value, Rng, 0)) Then
.Cells(i).Interior.ColorIndex = 3
End If
Next i
End With
Application.ScreenUpdating = True
End Sub
答案1
如果相应值不在 Sheet2 中,则此 VBA(宏)代码将帮助您突出显示 Sheet1 中的所有行。
Sub CompareSheets()
Dim i As Long, f As Variant
With Worksheets(1)
For i = 1 To .Cells(.Rows.Count, "A").End(xlUp).Row
f = Application.Match(.Cells(i, "A").Value2, Worksheets(2).Columns("A"), 0)
If Not IsError(f) Then
.Cells(i, "A").Interior.ColorIndex = 4
End If
Next i
End With
End Sub
注意:
- 使用的列是
A form Row 1 onwards
,您需要根据需要调整参考。 Sheet1
是Source
&Sheet2
是Target Sheet
。