【问题标题】:MS Excel: Find First Occurrence of Specific Text within a String Using Column Range ListMS Excel:使用列范围列表查找字符串中特定文本的第一次出现
【发布时间】:2018-12-24 13:14:02
【问题描述】:

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

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

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

Column 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,因为它从右到左搜索并找到关键字位置。

【问题讨论】:

    标签: excel string range find-occurrences


    【解决方案1】:

    返回的两个结果:Mobile、AL

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

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

    你的意思是从左到右

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

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

    【讨论】:

    • 谢谢,这个公式有效。您能否向我提供在 C2 和向下(
    • C2中的公式只是=IFERROR(SEARCH(B2, A$2), "")填写。要查找第二个匹配项,请将 , 1)), 1)) 更改为 , 2)), 1))。这会将 AGGREGATE 的 k 参数从最小修改为第二小。
    • 非常好的公式(+1)
    猜你喜欢
    • 1970-01-01
    • 2021-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多