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