在Excel中搜索并返回多个文本字符串

时间:2017-11-21 16:57:37

标签: excel string search

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

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

我想在第一栏中寻找的独立字符串是:“非洲”,“北非”,“东非”,“南非”,“西非”和“中非”。

如果第一栏上的单元格有“阿尔及利亚,法国,葡萄牙,东非,北非,津巴布韦”,那么J栏上的预期结果将是“东非,北非”。

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

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

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

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

谢谢

2 个答案:

答案 0 :(得分:2)

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

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

enter image description here

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

  1. ALT-F11调出VBE窗口
  2. ALT-I ALT-M打开了一个新模块
  3. 粘贴内容并关闭VBE窗口
  4. 如果保存工作簿,UDF将随之保存。 如果您在2003年之后使用的是Excel版本,则必须保存 该文件为.xlsm而不是.xlsx

    删除UDF:

    1. 按上述方式调出VBE窗口
    2. 清除代码
    3. 关闭VBE窗口
    4. 从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

      必须启用宏才能使其生效!

答案 1 :(得分:2)

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

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

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

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