在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)非常易于安装和使用:
- ALT-F11调出VBE窗口
- ALT-I ALT-M打开一个新的模块
- 粘贴东西,closuresVBE窗口
如果保存工作簿,则UDF将随之保存。 如果您在2003年以后使用的是Excel版本,则必须将该文件另存为.xlsm而不是.xlsx
要删除UDF:
- 如上所示调出VBE窗口
- 清除代码
- 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
更改为包含所需的区域名称的范围。