在单元格中的任何位置搜索字符串 - Excel VBA

时间:2016-12-05 00:00:42

标签: vba excel-vba excel

我有一个宏,它贯穿搜索词列表,将它们连接成一个由|分隔的字符串,然后在单独的表格中搜索匹配项。然而,这个宏只能找到完全匹配(直到句子的情况),而不仅仅是字符串出现在单元格中。我想我应该使用FoundCell函数(而不是If InStr...)来获得我想要的搜索,但我遇到了麻烦。

Public Sub HighlightListedValues()
    Dim strConcatList As String
    Dim cell As Range

    For Each cell In Sheets("List").Range("A1:A13")
        strConcatList = strConcatList & cell.Value & "|"
    Next cell

    For Each cell In Intersect(Sheets("Sheet1").Range("A:A"), Sheets("Sheet1").UsedRange)
        If InStr(strConcatList, cell.Value) > 0 Then       
            cell.EntireRow.Interior.Color = RGB(255, 0, 0) 
        End If
    Next cell
End Sub

1 个答案:

答案 0 :(得分:0)

如果你需要判断一个字符串的一部分是否与另一个字符串的一部分匹配,你将不得不遍历"搜索单词中的每个单词" string(如果可能的话,最好使用数组):

Public Sub HighlightListedValues()
    Dim searchWords() As Variant
    Dim aWord As Variant
    Dim aCell As Range

    searchWords = Sheets("List").Range("A1:A13").Value

    For Each aCell In Intersect(Sheets("Sheet1").Range("A:A"), Sheets("Sheet1").UsedRange)
        For Each aWord In searchWords
            If InStr(UCase(aCell.Value), UCase(aWord)) > 0 Then
                aCell.EntireRow.Interior.Color = RGB(255, 0, 0)
                Exit For
            End If
        Next
    Next
End Sub