【问题标题】:How to find if substring exists in a list of strings (and return full value in list if so)如何查找字符串列表中是否存在子字符串(如果存在则返回列表中的完整值)
【发布时间】:2014-07-25 10:27:19
【问题描述】:

我在 A5:A7655 中有一个品牌名称列表 我在 D5:D1400 中有一个潜在子字符串列表

我需要尽可能为每个子字符串找到对应的品牌名称。这些子字符串中的大多数都包含在品牌名称列表中的一个单元格中。返回列表中包含子字符串的第一个品牌名称就可以了。

例如:我在 D5 中的子字符串是“ABC Studios” - 如果我搜索整个列表,我会看到有一个品牌名称“ABC Studios, LLC”。在 E5 中,我想返回 ABC Studios, LLC。如果列表中没有匹配项,则返回 0 或者什么都可以。

我玩弄 =ISNUMBER(SEARCH(A5,$D$5:$D$1400)) 没有成功。谢谢!

【问题讨论】:

    标签: string excel search contains


    【解决方案1】:

    查找 last 匹配的字符串在公式方面实际上稍微简单一些:

    =IFERROR(LOOKUP(2^15,SEARCH(D5,$A$5:$A$7655),$A$5:$A$7655),"未找到匹配项")

    用于查找第一个匹配的字符串:

    =IFERROR(INDEX($A$5:$A$7655,MATCH(TRUE,INDEX(ISNUMBER(SEARCH(D5,$A$5:$A$7655)),,),0)),"未找到匹配项" )

    问候

    【讨论】:

    • 非常感谢 - 您有机会知道如何修改第二个公式,以便如果子字符串的长度为 1 或 2 - 公式会查找子字符串和品牌列表之间的完全匹配(例如,返回的品牌需要完全相同的值),如果子字符串的长度为 3 或 4,则品牌代码中左侧的 3 或 4 个字符需要完全匹配,如果长度为 5 或更多,它会返回你现在拥有的东西。谢谢!我玩过这个,但到目前为止还没有运气。 (我正在尝试修复很多误报)
    • 变得复杂! =IFERROR(IF(LEN(D5)=2,INDEX($A$5:$A$7655,MATCH(D5,$A$5:$A$7655,0)),IF(OR(LEN(D5)={3, 4}),INDEX($A$5:$A$7655,MATCH(D5,INDEX(LEFT($A$5:$A$7655,CHOOSE(1+(LEN(D5)=4),3,4)),, ),0)),INDEX($A$5:$A$7655,MATCH(TRUE,INDEX(ISNUMBER(SEARCH(D5,$A$5:$A$7655)),,),0)))),"不匹配找到”)
    • 你能说出是什么类型的错误,你在哪个字符串上得到了错误,你认为结果应该是什么,为什么?
    • 抱歉这里的延迟 - Excel 甚至无法执行该函数 - 表示该函数有错误。似乎是带有 3 个或 4 个条件的中间子句中的错误。我尝试重新创建自己,但仍然看到错误。
    • 没关系 - 好像你添加了一个额外的 ( - 明白了!谢谢!
    【解决方案2】:

    E5中输入:

    =IFERROR(OFFSET(A5,MATCH("*" & D5 & "*",A5:A7655,0)-1,0),"")
    

    然后抄下来。

    【讨论】:

      【解决方案3】:

      我建议使用二维网格来执行此操作。将品牌名称用作左列(行标签),将子字符串用作顶行(列标题)。那么B2中的公式为:

      =IF(ISERROR(FIND(B$1,$A2)),B$1,$A2)
      

      上下填充该公式,底部的行将填充为每个子字符串找到的最后一个品牌名称。如果没有找到品牌名称,它将简单地返回子字符串。 (您可以通过在填充完成后更改第一行中的公式来使其返回空 - 将 B$1 替换为 ""。)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-07-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-04-21
        • 2015-12-24
        • 1970-01-01
        相关资源
        最近更新 更多