【问题标题】:Search and return multiple text strings in Excel在 Excel 中搜索并返回多个文本字符串
【发布时间】:2018-05-05 05:46:11
【问题描述】:

我在 Excel 中有一个单元格列表,所有单元格都在 I 列中。每个单元格都有一个国家和/或地区列表。

我想构建一个公式,该公式将在 I 列的单元格中搜索特定字符串并在 J 列的同一行中返回相同的字符串。如果找到多个字符串,那么我想要所有发现在 J 列中的字符串。

我想在 I 列中查找的独立字符串是:“Africa”、“North Africa”、“East Africa”、“South Africa”、“West Africa”和“Central Africa”。

如果 I 列上的单元格有“阿尔及利亚、法国、葡萄牙、东非、北非、津巴布韦”,那么 J 列上所需的结果将是“东非、北非”。

我已经设法在 J 列上构建了一个公式,它将查找字符串:

=IF(ISNUMBER(SEARCH("Africa", I2)), "Africa", "")

我还设法制作了嵌套的 IF 语句,它们将独立查找每个字符串并在 J 列上返回,以首先找到的为准。但是,在这种情况下,只返回找到的第一个字符串。

如何构建一个公式,既可以搜索一个单元格中的所有字符串(在找到第一个字符串时不停止)并将它们全部返回到 J 列中?

谢谢

【问题讨论】:

    标签: excel string search


    【解决方案1】:

    试试这个小的用户定义函数:

    Public Function GetKeyWords(rng As Range) As String
        bry = Array("Africa", "North Africa", "South Africa", "East Africa", "West Africa", "Central Africa")
        ary = Split(rng.Text, ", ")
        For Each a In ary
            For Each b In bry
                If a = b Then GetKeyWords = GetKeyWords & ", " & b
            Next b
        Next a
        GetKeyWords = Mid(GetKeyWords, 3)
    End Function
    

    用户定义函数 (UDF) 非常易于安装和使用:

    1. ALT-F11 调出 VBE 窗口
    2. ALT-I ALT-M 打开一个新模块
    3. 粘贴内容并关闭 VBE 窗口

    如果您保存工作簿,UDF 将与它一起保存。 如果您使用的是 2003 年以后的 Excel 版本,则必须保存 文件为 .xlsm 而不是 .xlsx

    要删除 UDF:

    1. 如上所示打开 VBE 窗口
    2. 清除代码
    3. 关闭 VBE 窗口

    要使用 Excel 中的 UDF:

    =myfunction(A1)

    要了解有关宏的更多信息,请参阅:

    http://www.mvps.org/dmcritchie/excel/getstarted.htm

    http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

    有关 UDF 的详细信息,请参阅:

    http://www.cpearson.com/excel/WritingFunctionsInVBA.aspx

    必须启用宏才能正常工作!

    【讨论】:

      【解决方案2】:

      如果您有 Office 365 Excel,则可以使用以下数组公式:

      =textjoin(",",TRUE,IF(ISNUMBER(SEARCH(", " & A1:A6 & ", ",", " & I1 & ", ")),A1:A6,""))
      

      作为数组公式,退出编辑模式时需要使用 Ctrl-Shift-Enter 确认,而不是 Enter。

      A1:A6 更改为包含所需区域名称的范围。

      【讨论】:

      • 是否有类似的公式可以以相反的顺序工作。从列表中查找并排除关键字。如果 I 列上的单元格有“阿尔及利亚、法国、葡萄牙、东非、北非、津巴布韦”,那么 J 列上所需的结果将是“阿尔及利亚、法国、葡萄牙、津巴布韦”。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多