【问题标题】:Excel lookup every word in a cell and match with a listExcel查找单元格中的每个单词并与列表匹配
【发布时间】:2018-12-16 20:02:30
【问题描述】:

我正在尝试提出一个 excel 公式来查找单元格中以空格或逗号分隔的每个单词,将每个单词与单词列表进行匹配,然后在另一列中返回找到的单词。 举个例子:

所以 ColorFamily 列应该是一个公式 我试过使用 VLOOKUP 例如

 =VLOOKUP(H3,color_family!$A$3:$A$19,1,FALSE)

但限制是它不会遍历单元格中的每个单词。是否可以使用 Excel 公式执行此操作,还是需要 VBA?

【问题讨论】:

  • 您目前在整个单元格上工作。如果您想逐字执行此操作,则必须将字符串拆分为单个单词并查找它们。根据字符串的长度,您可以使用多个公式,但 VBA 也足够了。
  • 看看TEXTJOIN for xl2010/xl2013 with criteria。我很确定你能做到这一点。
  • 你试过 find()
  • @Luuklag:你能不使用 VBA 将一个单元格的内容拆分到不同的单元格上吗? (我认为这只能使用 VBA,而不是公式)
  • @Dominique,利用Find()Left()Right() 你可以将它分成不同的单元格。

标签: excel excel-formula


【解决方案1】:

作为数组公式输入(ctrl+shift+enter):

=TEXTJOIN(" ",TRUE,IF(ISERR(FIND(color_family!$A$3:$A$19,H3)),"",color_family!$A$3:$A$19))

【讨论】:

    【解决方案2】:

    我无法理解接受的答案,但这是一种类似的方法。这在 Excel 365 中有效,并且取决于其动态数组功能。

    这是我正在使用的电子表格布局:

    我使用空格来分隔颜色列表中的值,但解决方案可以概括为处理逗号等。

    我用来构建所需公式的步骤是:

    1. 使用 TEXTJOIN 将有效列表分组为单个字符串:TEXTJOIN(",",TRUE,$A$7:$A$9)

    2. 将颜色单元格拆分为单词列(使用动态数组功能)。这里有一篇关于如何做到这一点的文章:https://www.mrexcel.com/board/excel-articles/split-text-cell-into-columns-of-words.19/ e.g.对于 A2,此公式在单独的列中生成黑色和红色

      TRIM(MID(SUBSTITUTE(A2," ",REPT(" ",LEN(A2))),SEQUENCE(1,LEN(A2)-LEN(SUBSTITUTE(A2," ",""))+1,1,LEN(A2)),LEN(A2)))

    3. 使用 FIND 在有效列表中查找上面每一列中的文本

    4. 如果 FIND 返回一个数字(用 ISNUMBER 检查)返回文本,否则返回 ""

    5. 这仍然在单独的列中,所以现在使用 TEXTJOIN 将结果组合到一个逗号分隔的列表中。

    B2中的最终公式:

    `=TEXTJOIN(",",TRUE,IF(ISNUMBER(FIND(TRIM(MID(SUBSTITUTE(A2," ",REPT(" ",LEN(A2))),SEQUENCE(1,LEN(A2)-LEN(SUBSTITUTE(A2," ",""))+1,1,LEN(A2)),LEN(A2))),TEXTJOIN(",",TRUE,$A$7:$A$9))),TRIM(MID(SUBSTITUTE(A2," ",REPT(" ",LEN(A2))),SEQUENCE(1,LEN(A2)-LEN(SUBSTITUTE(A2," ",""))+1,1,LEN(A2)),LEN(A2))),""))`
    

    可以复制到 B3、B4 等中给出最终结果:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-10
      • 1970-01-01
      • 1970-01-01
      • 2020-11-07
      相关资源
      最近更新 更多