1

现在我有这些数据,我正在尝试过滤掉包含在单元格 C3、C4 等中的数据。

我过滤 1 个单元格的正则表达式匹配数据没有问题,如下所示

在此处输入图像描述

但是我无法对超过 2 个单元格进行正则表达式匹配,例如,我似乎无法在单元格之间进行管道工作,因为我会遇到解析错误,我尝试添加“C3|C4”。

在此处输入图像描述

在此处输入图像描述

我想要的想要的输出如下,但我只能硬编码不是我想要的包含文本。我希望我可以有一些提示来正则表达式匹配多个单元格中的文本,以便它可以正则表达式匹配单元格 C3(Apple)和 C4(Pear)中的文本并显示所需的输出。

在此处输入图像描述

4

2 回答 2

2

您需要TEXTJOIN用于 C 列中的动态列表:

=IF(TEXTJOIN( , 1, C3:C)<>"", FILTER(A2:A, REGEXMATCH(LOWER(A2:A), 
 TEXTJOIN("|", 1, LOWER(C3:C)))), "no input")

0

于 2019-10-08T10:14:19.737 回答
1

您可以使用

=IF(C3<>"", FILTER(A2:A,REGEXMATCH(A2:A, TEXTJOIN("|", TRUE, C3:C4) )), "no input")

或者,您可以更进一步,使用单词边界和围绕备选方案的分组结构来匹配ApplePear作为整个单词:\b

=IF(C3<>"", FILTER(A2:A,REGEXMATCH(A2:A, "\b(?:" & TEXTJOIN("|", TRUE, C3:C4) & ")\b")), "no input")

如果您需要使搜索不区分大小写,只需(?i)在开头附加:

=IF(C3<>"", FILTER(A2:A,REGEXMATCH(A2:A, "(?i)\b(?:" & TEXTJOIN("|", TRUE, C3:C4) & ")\b")), "no input")

看看TEXTJOIN文档是怎么说的:

组合来自多个字符串和/或数组的文本,并使用可指定的分隔符分隔不同的文本。

因此,当您TRUE作为第二个参数传递时,您不必担心范围是否包含空单元格,并且正则表达式不会被 extraneous 破坏|||

测试:

在此处输入图像描述

于 2019-10-08T09:06:58.837 回答