在Excel中search并返回多个文本string

我在Excel中有一个单元格列表,全部在列I中。每个单元格都有一个国家和/或区域的列表。

我想build立一个公式,将search列I中的单元格中的文本为特定的string,并返回列J的同一行中的相同的string。如果find多个string,那么我希望所有stringfind在栏J中

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

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

我已经设法在J列上build立一个公式来查找string:

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

我也设法使嵌套的IF语句独立地查找每个string,并返回,在列J,无论哪个是第一次发现。 但是,在这种情况下,只返回find的第一个string。

我怎样才能build立一个公式,既将search所有的string在一个单元格(不停止,当它发现第一个),并返回他们全部J列?

谢谢

试试这个小的用户定义的function:

 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. 粘贴东西,closuresVBE窗口

如果保存工作簿,则UDF将随之保存。 如果您在2003年以后使用的是Excel版本,则必须将该文件另存为.xlsm而不是.xlsx

要删除UDF:

  1. 如上所示调出VBE窗口
  2. 清除代码
  3. closuresVBE窗口

从Excel中使用UDF:

= myfunction的(A1)

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

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

macros必须启用这个工作!

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

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

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

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