【问题标题】:How to retrieve a matched substring where a string matches a list of potential substrings如何检索匹配的子字符串,其中字符串与潜在子字符串列表匹配
【发布时间】:2015-12-22 01:36:05
【问题描述】:

Stack Overflow 的老用户虽然找不到明确的答案

目标:在每个产品字段旁边,我需要查找并检索匹配的品牌,该品牌的子字符串位于另一个工作表中。

-Worksheet 1 (Products) 我有一列有 76,000 行 - 工作表 2(品牌)我有一个包含 2,000 个品牌并且还在不断增长的列

样本数据:

产品 A栏

  • 天使牌黑橄榄2KG
  • ANMOL 盐桌 750GR
  • 其他 76,000 人

品牌 A栏

  • 安东内利
  • AHG

因此,结果应该从不断增长的列表中获取品牌并将其动态放置在产品工作表中:

  • A1- 产品 B1- 品牌
  • A2-天使牌黑橄榄2KG B2-天使
  • C2- ANMOL 盐表 750GR C3- ANMOL

我已经搜索了许多论坛,并确信 INDEX MATCH Array 是我需要做的,但似乎无法获得语法......可能是我需要在某个地方包含一个 SEARCH .

这是我发现的最接近我需要的东西,虽然不能完全适合我:How to find if substring exists in a list of strings (and return full value in list if so)

感谢您对我的解释的耐心...我会在这方面做得更好!

更新:这有点像我所追求的,虽然它需要很长时间才能刷新,而且它只拾取前几个字母而不是整个单词:

=IFERROR(INDEX(BRANDS!A:A,MATCH(TRUE,INDEX(ISNUMBER(SEARCH(BRANDS!A:A,A2)),,),0)),"未找到匹配")

【问题讨论】:

    标签: excel excel-formula


    【解决方案1】:

    如果品牌名称总是包含在Products中的话,你可以试试:

    =INDEX(Brands!$A:$A,MATCH(1,IF(ISERROR(SEARCH(Brands!$A:$A,A2)),0,1),0))

    您在 B2 上使用 Ctrl+Shift+Enter 输入此公式。
    例如,您有以下设置:

    它会给你你想要的。请注意,由于您要处理大量数据,因此重新计算可能需要一段时间。

    另一种选择是使用每次打开工作簿时都需要运行的宏来执行此操作。

    重要提示:如果您在产品名称上也有 BLACKOLIVES 等品牌名称,这将失败。

    【讨论】:

    • 一个有效的结果。我发现使用这个公式更成功 =IFERROR(INDEX(BRANDS!A:A,MATCH(TRUE,INDEX(ISNUMBER(SEARCH(BRANDS!A:A&" ",A1)),,),0)),"No找到匹配")
    • Scatch 我的最后一个答案......它的效果与我在原始问题中的答案相同,我添加到上一条评论中的唯一补充是搜索后的连接空格,以便它返回一个完整的单词后跟一个空格。需要注意的是,这只会返回带有空格的品牌...您对 VBA 宏的建议似乎是最佳选择。
    猜你喜欢
    • 2023-03-28
    • 2013-03-07
    • 1970-01-01
    • 2013-06-18
    • 2021-11-30
    • 1970-01-01
    • 1970-01-01
    • 2021-08-25
    • 1970-01-01
    相关资源
    最近更新 更多