2015-06-10 175 views
0

我正在尝试搜索B列,并突出显示所有包含单词以外的单词的单元格传单,批量清除,在季节吃,线路驱动器,市场特殊,推物品和周末者。我有意从第三排开始。Excel VBA突出显示不包含文字列表中的单元格范围

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

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 
+0

相关(真的是重复),今天早些时候问。看看:http://stackoverflow.com/questions/30755945/excel-vba-2010-how-to-find-and-highlight-all-occurences-of-multiple-strings-w/30757304#comment49581371_30757304 –

+0

不知何故,你需要列出要搜索的条目列表。基于由'|'或别的东西分隔的一系列条目的'Split'是一个好方法。然后你可以用'For Each ...'来迭代这些'' –

+1

你并不是真的需要VBA--你可以用条件格式来做到这一点。把你的单词列表放在一个连续的范围内,然后使用一个CF公式。这将有利于动态化,避免当内容变为有效时清除颜色的必要性。 –

回答

1

一个简单的方法做,这是创建一个字典存储有效的值,然后检查,看看他们是否在词典:

'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 
0

也许这?

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 
0

只使用条件格式规则。 首页>条件格式>突出显示单元格规则>包含

然后就是对每个字的规则文本,您可以: - 手动键入单词 - 或使用单元格引用,它指向的单元格它应该看看

相关问题