现在我有这些数据,我正在尝试过滤掉包含在单元格 C3、C4 等中的数据。
我过滤 1 个单元格的正则表达式匹配数据没有问题,如下所示
但是我无法对超过 2 个单元格进行正则表达式匹配,例如,我似乎无法在单元格之间进行管道工作,因为我会遇到解析错误,我尝试添加“C3|C4”。
和
我想要的想要的输出如下,但我只能硬编码不是我想要的包含文本。我希望我可以有一些提示来正则表达式匹配多个单元格中的文本,以便它可以正则表达式匹配单元格 C3(Apple)和 C4(Pear)中的文本并显示所需的输出。
现在我有这些数据,我正在尝试过滤掉包含在单元格 C3、C4 等中的数据。
我过滤 1 个单元格的正则表达式匹配数据没有问题,如下所示
但是我无法对超过 2 个单元格进行正则表达式匹配,例如,我似乎无法在单元格之间进行管道工作,因为我会遇到解析错误,我尝试添加“C3|C4”。
和
我想要的想要的输出如下,但我只能硬编码不是我想要的包含文本。我希望我可以有一些提示来正则表达式匹配多个单元格中的文本,以便它可以正则表达式匹配单元格 C3(Apple)和 C4(Pear)中的文本并显示所需的输出。
您可以使用
=IF(C3<>"", FILTER(A2:A,REGEXMATCH(A2:A, TEXTJOIN("|", TRUE, C3:C4) )), "no input")
或者,您可以更进一步,使用单词边界和围绕备选方案的分组结构来匹配Apple或Pear作为整个单词:\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 破坏|||。
测试: