我刚刚注意到,Excel 查找中没有“仅匹配整个单词”的选项(我不是在谈论“匹配整个单元格内容”),例如搜索“part”不应匹配“partner”。MS Word 有此选项(查看 MS Word 的屏幕截图)。
Excel 中是否有解决此问题的办法?
答案1
正如斯科特 (Scott) 指出的那样,我最初的答案是错误的。
由于定义单词边界的方法有很多种,因此用公式来做这件事会比较困难。我猜这就是为什么\b
正则表达式中存在(单词边界)的原因。如果我们能在 Excel 的查找/替换对话框中使用它们就好了。
安装此 Excel 插件,http://www.codedawn.com/excel-add-ins.php点击新的查找并替换 RegEx按钮(或 2003 上的菜单选项)并使用此搜索词\bword\b
,取消勾选/勾选匹配大小写,然后点击“查找”。
重要的是,b 是小写的,你必须学习一些正则表达式(推荐本网站) 如果您想搜索涉及标点符号的内容,但\b
如果您只想搜索这些,那么在标签之间放置任何标准字母/数字都是可以的。
我认为这个测试涵盖了大多数情况:
答案2
公式方面,你可以用这个公式搜索“单词”(不区分大小写),只对精确的单词获得 TRUE,假设没有标点符号
=ISNUMBER(SEARCH(" Word "," "&A1&" "))
对于类似这样的文本,将返回 TRUE
给聪明人的忠告 或者油脂就是这个词
并且正确地 FALSE达摩克利斯之剑.....但你也会得到 FALSE 类似的东西
我的话!因为感叹号否定了匹配
为了处理标点符号,您可以使用多个 SUBSTITUTE 函数,例如,要忽略逗号、分号和感叹号,您可以使用此版本
=ISNUMBER(SEARCH(" Word "," "&SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,",",""),";",""),"!","")&" "))
答案3
在“查找”部分输入参数时,只需在单词前后添加一个空格即可。在我的例子中,“ Van”会阻止“ SAVANA”更改,而“ Man”会阻止“ Mankind”更改。
答案4
我已找到该问题的解决方案。
您必须创建一个函数,在完成标准搜索并找到 1 个结果后调用该函数。
该函数将检查单词是否为整个单词或注释。以下是该函数的代码:
它检查表达式前后的字符,如果它不是字母(无论是否带重音),则返回 true,否则返回 false。
Function WholeWord(ByVal text As String, ByVal expression As String) As Boolean
Dim aux1 As Integer: aux1 = 0
Dim aux2 As Integer: aux2 = 0
Dim condition1 As Boolean: condition1 = False
Dim condition2 As Boolean: condition2 = False
aux1 = InStr(1, text, expression, vbTextCompare)
If aux1 = 1 Then
condition1 = True
Else
If UCase(Mid(text, aux1 - 1, 1)) Like "[!A-ZÂÊÎÔÛÁÉÍÓÚÇÃÕÀÈÌÒÙÄËÏÖÜ]" Then
condition1 = True
End If
End If
aux2 = aux1 + Len(expression)
If aux2 = Len(text) + 1 Then
condition2 = True
Else
If UCase(Mid(text, aux2, 1)) Like "[!A-ZÂÊÎÔÛÁÉÍÓÚÇÃÕÀÈÌÒÙÄËÏÖÜ]" Then
condition2 = True
End If
End If
If condition1 = True And condition2 = True Then
WholeWord = True
Else
WholeWord = False
End If
End Function