我在Excel中有一个单元格列表,所有单元格都在第一列中。每个单元格都有一个国家和/或地区列表。
我想构建一个公式,它将在第一列的单元格中搜索特定字符串的文本,并在列J的同一行中返回相同的字符串。如果找到多个字符串,那么我想要所有发现在J列中的字符串。
我想在第一栏中寻找的独立字符串是:“非洲”,“北非”,“东非”,“南非”,“西非”和“中非”。
如果第一栏上的单元格有“阿尔及利亚,法国,葡萄牙,东非,北非,津巴布韦”,那么J栏上的预期结果将是“东非,北非”。
我已经设法在列J上构建一个将查找字符串的公式:
=IF(ISNUMBER(SEARCH("Africa", I2)), "Africa", "")
我还设法制作嵌套的IF语句,它们将独立地查找每个字符串,并在列J上返回,无论哪个首先找到。但是,在这种情况下,只返回找到的第一个字符串。
如何构建一个既可以搜索一个单元格中的所有字符串的公式(当它找到第一个单元格时不停止)并将它们全部返回到J列中?
谢谢
答案 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
用户定义函数(UDF)非常易于安装和使用:
如果保存工作簿,UDF将随之保存。 如果您在2003年之后使用的是Excel版本,则必须保存 该文件为.xlsm而不是.xlsx
删除UDF:
从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
更改为包含所需地区名称的范围。