首页 > 解决方案 > MS Excel:使用列范围列表查找字符串中特定文本的首次出现

问题描述

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

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

凯伦出生于俄亥俄州阿克伦市,在阿拉巴马州莫比尔上大学,然后在父母退休后不久搬到佐治亚州亚特兰大,现在住在北卡罗来纳州罗利。

列 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)),"")

-和-

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

两个结果均返回:Mobile、AL

预期成绩:

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

注意:虽然有四种可能的匹配结果,但它会匹配并检索/提取 Akron, OH,因为它从右到左搜索并找到关键字位置。

标签: excelstringrangefind-occurrences

解决方案


两个结果均返回:Mobile、AL

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

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

你的意思是从左到右

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

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

在此处输入图像描述


推荐阅读