我如何在 excel 的单元格中搜索准确的字符串?
How do i search for an exact string in a cell in excel?
我想弄清楚如何使用 vba 在 excel 的单元格中搜索精确的字符串匹配。
例如,我想在 "There is the store" 中搜索 "the" 并且只找到 "the" 而不是 "There" 因为它也有。
我正在尝试做一个自动 search/replace 并且我继续 运行 这个问题,它也替换了那里的 "The" 部分。我研究过使用 Instr,但这没有帮助。
我正在搜索的数据位于单元格 A1 only.I 中,查看了 .find 但似乎它只适用于 Column 参数。我错过了什么吗?此外,我所有的单元格位置都是动态确定的,因此我无法对地址进行硬编码。
任何帮助将不胜感激
谢谢,
在 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
我想弄清楚如何使用 vba 在 excel 的单元格中搜索精确的字符串匹配。 例如,我想在 "There is the store" 中搜索 "the" 并且只找到 "the" 而不是 "There" 因为它也有。 我正在尝试做一个自动 search/replace 并且我继续 运行 这个问题,它也替换了那里的 "The" 部分。我研究过使用 Instr,但这没有帮助。 我正在搜索的数据位于单元格 A1 only.I 中,查看了 .find 但似乎它只适用于 Column 参数。我错过了什么吗?此外,我所有的单元格位置都是动态确定的,因此我无法对地址进行硬编码。 任何帮助将不胜感激
谢谢,
在 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