在Excel中search多个特定的单词

我已经看到了几个可以在单元格中search多个单词的Excel公式示例,如下所示:

=IF(SUMPRODUCT(--(NOT(ISERR(SEARCH({"mail","post"},A4)))))>0,1,"") 

和:

 =OR(NOT(ISERR(SEARCH("mail",A4))),NOT(ISERR(SEARCH("post",A4)))) 

然而,结果会拿起任何“邮件”(即“邮件”或“电子邮件”)或“邮政”(即“邮政”或“姿势”)的实例。 有没有办法search多个单词,只有列出的特定单词?

遵循该计划:

在这里输入图像说明

该公式考虑search一些字尾“char”。 (在一个数组中)。
search此字符前后尝试定义完整的单词。
如果您只需要search第一个发生,您可以使用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) 

如果您需要search每个发生,最好使用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 

在模块中添加function:

 B7 -> =FindWords(A2;B2)