MS Excel:使用列范围列表查找字符串中的特定文本的第一次出现

时间:2018-12-24 13:14:03

标签: excel string range find-occurrences

使用MS Excel公式查找并提取在“关键字”的列范围内找到的特定单词的第一个(第一个)实例/出现。

在单元格A2中,我有一个包含以下内容的子字符串:

卡伦(Karen)出生于俄亥俄州阿克伦(Akron),在阿拉巴马州莫比尔(Mobile)上大学,然后在父母退休后不久移居佐治亚州亚特兰大。

B2:B10列(列列表中的城市和州关键字列表)

Tulsa, OK  
New York, NY  
Boise, ID  
Atlanta, GA   
Baltimore, MD  
Raleigh, NC  
Pittsburgh, PA  
Akron, OH  
Mobile, AL

我尝试使用以下公式,但是没有成功。

=IFERROR(INDEX($B$2:$B$10,MATCH(TRUE,COUNTIF(A2,"*"&$B$2:$B$10&"*")>0,0)),"")

-AND-

=IFERROR(INDEX($B$2:$B$10,MATCH(TRUE,ISNUMBER(SEARCH"*"&$B$2:$B$10&"*",A2)),0)),"")

返回的两个结果:移动,AL

预期结果:

正确的结果=俄亥俄州阿克伦城

  

注意:尽管有四个可能的匹配结果,但它会在搜索和查找从右到左的关键字位置时匹配并检索/提取俄亥俄州的阿克伦。

1 个答案:

答案 0 :(得分:1)

  

返回的两个结果:移动设备,AL

您尝试的两个数组公式实际上都为我返回了乔治亚州亚特兰大

  

从右到左查找关键字位置。

您是说从左到右吗?

这实际上是一个相当普遍的问题。您需要找到字符串中子字符串的所有匹配SEARCH位置的MIN,然后使用它来查找列表中子字符串的索引。

=INDEX(B2:B10, AGGREGATE(15, 7, ROW(1:9)/(SEARCH(B2:B10, A2)=AGGREGATE(15, 7, SEARCH(B2:B10, A2), 1)), 1))

enter image description here