【问题标题】:Searching a cell with a string of comma delimited values in Excel在 Excel 中搜索具有逗号分隔值字符串的单元格
【发布时间】:2020-11-06 15:07:15
【问题描述】:

很遗憾,我找不到以下问题的解决方案。

我有一个表 (DATA),其中包含一个带有非唯一标识符的 A 列和一个带有多个用空格分隔的 4 位代码的 B 列。

在另一个表 (CODES) 中,我有一个 A 列用于出现在 A 列 (DATA) 中的唯一标识符,而 B 列有几个,用逗号分隔的 4 位代码。

我的目标是检查第一个表 (DATA) 中的所有条目,并列出在另一个表 (CODES) 中标识的 B 列中至少有一个代码的 NOK

我使用了以下公式:

=IFERROR(IF(ISNUMBER(SEARCH(INDEX(CODES, MATCH([@A], CODES[A], 0), MATCH("B", CODES[#Kopfzeilen],0)),[@B])), "NOK", "OK"), "OK")

不幸的是,它只搜索列 B (CODES) 中的完整字符串,而不是搜索由逗号分隔的每个值。

是否可以在不使用 VBA 的情况下使用公式(因为这会在共享点(文件存储位置)上产生问题)?

【问题讨论】:

  • 假设没有大量代码,您可以让自己更轻松并执行IF(IF(FIND("code1",cell_ref)>0,1,0)+IF(FIND("code2",cell_ref)>0,1,0)+IF(FIND("code3",cell_ref)>0,1,0)>0,"NOK","OK") 之类的操作
  • 有多少潜在的逗号分隔值?您可以编写一个公式来查看是否在第一个逗号匹配之前、第二个和第三个匹配之间等等。
  • 此外,您必须先分解搜索条件而不是制作单列列表,这让您自己变得更加困难。
  • 每个唯一标识符最多有大约 10 个代码(每个项目的附件)。代码表基本上表示带有某些正在审查中的配件的项目(“NOK”)。总共有大约 100 种可能的代码(附件)。我还尝试了多次在 CODES 表中列出标识符的方法,而 B 列中只有一个条目(AB123 - CD01、AB123 - EF02、CD345 - ZD01、EF678 - AB34),但这不适用于“INDEX”。所以像“code1”这样的硬编码“搜索词”似乎是不切实际的。

标签: excel excel-formula excel-2013


【解决方案1】:

使用 FILTERXML:

=IF(OR(ISNUMBER(SEARCH(FILTERXML("<a><b>"&substitute(INDEX(CODES, MATCH([@A], CODES[A], 0), MATCH("B", CODES[#Headers],0)),",","</b><b>")&"</b></a>","//b"),[@B]))), "NOK", "OK")

如果不是英语,请确保将#Headers 更改为您的语言

在 Excel 2013 中退出编辑模式时,需要使用 Ctrl-Shift-Enter 而不是 Enter 来确认。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-24
    • 1970-01-01
    • 1970-01-01
    • 2016-08-30
    相关资源
    最近更新 更多