Excel VBA突出显示不包含单词列表中的文本的单元格

我正在尝试searchB列,并突出显示所有包含“Flyer”,“Bulk Clearance”,“Eat In Season”,“Line Drive”,“Market Special”,“Push Item”和“Weekender” 我有意从第三排开始。

下面的代码仅适用于一个单词(Flyer),但我希望macros能够将单元格中的文本与上面提到的单词列表进行比较,并突出显示文本与列表中的内容不同。

Sub Orange() Dim LR As Long, i As Long LR = ActiveSheet.Range("B" & Rows.Count).End(xlUp).Row For i = 3 To LR With Range("B" & i) If .Value <> "Flyer" Then .Cells.Interior.ColorIndex = 45 End With Next i MsgBox "The orange are not valid values." End Sub 

一个简单的方法是创build一个存储有效值的字典,然后检查它们是否在字典中:

 'Requires reference to Microsoft Scripting Runtime. Sub Orange() Dim temp() As String temp = Split("Flyer,Bulk Clearance,Eat In Season,Line Drive,Market Special,Push Item,Weekender", ",") Dim items As New Dictionary, item As Variant For Each item In temp items.Add item, item Next item Dim LR As Long, i As Long LR = ActiveSheet.Range("B" & Rows.Count).End(xlUp).row For i = 3 To LR With Range("B" & i) If Not items.Exists(.Value) Then .Cells.Interior.ColorIndex = 45 End With Next i MsgBox "The orange are not valid values." End Sub 

也许这个?

 Sub HighlightFound() Dim FoundCell As Range, MyArr As Variant, X As Long, FindRange As Range MyArr = Array("Flyer", "Bulk Clearance", "Eat In Season", "Line Drive", "Market Special", "Push Item", "Weekender") Set FindRange = Range("B3:B" & Range("B" & Rows.Count).End(xlUp).Row) For X = LBound(MyArr) To UBound(MyArr) Set FoundCell = FindRange.Find(MyArr(X)) Do Until FoundCell Is Nothing If FoundCell.Row > FindRange.FindNext(after:=FoundCell).Row Then Exit Do Else FoundCell.Interior.ColorIndex = 45 Set FoundCell = FindRange.FindNext(after:=FoundCell) End If Loop Next End Sub 

只需使用条件格式规则。 主页>条件格式>突出显示单元格规则>包含的文本

然后对每个单词都有一个规则,你可以: – 手动input单词 – 或者使用一个单元格引用,并指向它应该看的单元格