我已经看过几个可以在单元格中搜索多个单词的Excel公式示例:
=IF(SUMPRODUCT(--(NOT(ISERR(SEARCH({"mail","post"},A4)))))>0,1,"")
和
=OR(NOT(ISERR(SEARCH("mail",A4))),NOT(ISERR(SEARCH("post",A4))))
但是,结果将会收集" mail" (即" mail"或" email")或" post" (即"帖子"或"姿势")。有没有办法搜索多个单词,只列出列出的特定单词?
答案 0 :(得分:1)
遵循该计划:
该公式考虑搜索一些字符结尾的字符,例如"。" (在数组中)。
在之前搜索此字符,在之后搜索以尝试定义完整字词
如果您只需要搜索第一次出现,可以使用EXCEL:
B3 -> =IF(IFERROR(VLOOKUP(MID(A2;SEARCH(B2;A2)+LEN(B2);1);{" ";"-";".";",";";";":"};1;);FALSE)=FALSE;FALSE;TRUE)
B4 -> =OR(SEARCH(B2;A2)=1;IF(IFERROR(VLOOKUP(MID(A2;SEARCH(B2;A2)-1;1);{" ";"-";".";",";";";":"};1;);FALSE)=FALSE;FALSE;TRUE))
B5 -> =AND(B3;B4)
如果您需要搜索每次出现,最好使用VBA:
Public Function FindWords(xx As Range, Stri As String) As Boolean
For i = 1 To Len(xx.Value)
If Mid(xx.Value, i, Len(Stri)) = Stri Then
If (i = 1) Then
If InStr(1, " ,.-;:_", Mid(xx.Value, i + Len(Stri), 1)) > 0 Or (i + 1 + Len(Stri) > Len(xx.Value)) Then
FindWords = True
Exit Function
End If
ElseIf (InStr(1, " ,.-;:_", Mid(xx.Value, i - 1, 1)) > 0) Then
If InStr(1, " ,.-;:_", Mid(xx.Value, i + Len(Stri), 1)) > 0 Or (i + Len(Stri) > Len(xx.Value)) Then
FindWords = True
Exit Function
End If
End If
End If
Next
FindWords = False
End Function
在模块中添加功能:
B7 -> =FindWords(A2;B2)