在Excel中用逗号分隔值的字符串搜索单元格

问题描述

不幸的是,我找不到以下问题的解决方案。

我有一个表(DATA),该表由具有非唯一标识符的A列和由几个用空格分隔的4位代码的B列组成。

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

Example as it should be

我的目标是检查第一张表(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)中的完整字符串,而不是每个用逗号分隔的值。

Example as it currently is

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

解决方法

使用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来确认。

enter image description here