如何在excel的单元格中搜索确切的字符串?

时间:2015-01-25 05:36:19

标签: excel find

我试图弄清楚如何使用vba在excel中的单元格中搜索精确的字符串匹配。 例如,我想搜索"""在"有商店"并且它只能找到""而不是"那里"因为它也有。 我正在尝试进行自动搜索/替换,并继续运行这个问题,它取代了""那里的一部分。我已经研究过使用Instr,但这没有用。 我正在搜索的数据只在单元格A1中。我查看.find但看起来它只适用于Column参数。我错过了什么吗?此外,我的所有单元格位置都是动态确定的,因此我无法对地址进行硬编码。 任何帮助将不胜感激

谢谢,

1 个答案:

答案 0 :(得分:-1)

在Excel中进行全字替换的最简单方法是使用正则表达式

这是一个简单的起点。传递范围,查找单词和替换单词。您可以添加错误处理等以满足您的需求。

Sub ReplaceInRange( _
  r As Range, _
  FindWord As String, _
  Optional ReplaceWord As String = vbNullString)
    Dim re As RegExp
    Dim mtchs As MatchCollection
    Dim mtch As Match

    Dim dat As Variant
    Dim rw As Long, col As Long

    ' Get Data from range
    If r.Count = 1 Then
        ReDim dat(1 To 1, 1 To 1)
        dat(1, 1) = r.Value
    Else
        dat = r.Value
    End If


    ' Set up Regex
    Set re = New RegExp
    re.IgnoreCase = True
    re.MultiLine = True
    re.Global = True
    re.Pattern = "\b" & FindWord & "\b"

    'process the data
    For col = 1 To UBound(dat, 2)
    For rw = 1 To UBound(dat, 1)
        If re.test(dat(rw, col)) Then
            dat(rw, col) = re.Replace(dat(rw, col), ReplaceWord)

            'Optional, remove double spaces
            dat(rw, col) = Application.WorksheetFunction.Trim(dat(rw, col))
        End If
    Next rw, col

    ' Return data to range
    r = dat
End Sub

呼叫就像这样

Sub Demo()
    Dim rng As Range

    ' Get range to process by any means you choose
    Set rng = [A1:A2]

    ' Replace 'the' with blank
    ReplaceInRange rng, "the"
End Sub