【问题标题】:Searching for multiple specific words in Excel在 Excel 中搜索多个特定单词
【发布时间】:2014-07-09 03:03:10
【问题描述】:

我见过几个 Excel 公式示例,它们可以像这样在一个单元格中搜索多个单词:

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

还有:

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

但是,结果将选取“邮件”(即“邮件”或“电子邮件”)或“发布”(即“发布”或“姿势”)的任何实例。有没有办法搜索多个单词并且只搜索列出的特定单词?

【问题讨论】:

  • 你能描述一下你想要做什么的输入和输出吗?
  • 如果单元格包含多个单词,您必须在搜索功能中包含单词边界。如果您只是查看包含单个单词的单元格,那么您将进行相等性测试,而不是 SEARCH。

标签: excel vba search text excel-formula


【解决方案1】:

按照方案:

该公式考虑在结尾的一些字符中搜索“。”之类的单词。 (在一个数组中)。
搜索此字符 beforeafter 以尝试定义完整的单词。
如果您只需要搜索第一次出现,您可以使用 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)

【讨论】:

    猜你喜欢
    • 2021-04-01
    • 1970-01-01
    • 2015-05-22
    • 2016-05-20
    • 2015-09-15
    • 1970-01-01
    • 1970-01-01
    • 2015-07-13
    • 1970-01-01
    相关资源
    最近更新 更多