首页 > 解决方案 > 改进 Excel 中的模糊匹配过滤器

问题描述

我使用一种模糊匹配过滤器,基于带有过滤器列表的附加列。公式为:

=IF(SUMPRODUCT(COUNTIF(A2,"*"&B$2:$B$22&"*"))>0,"Delete","Keep")

事实上,有两个公式,它们作用于同一种类型——它们是在实验中创建的。第二个是:

=IF(SUMPRODUCT(--ISNUMBER(SEARCH($B$2:$B$22,A2))),"Delete","Keep")

:如何写而不是“删除”列 B 中的匹配值?我无法在这两个公式中完成这项工作。

更新 @Jerry 翻译公式后

=IFERROR(INDEX($B$2:$B$22,MATCH(9^99,SEARCH($B$2:$B$52,A2))),"Keep")

=WENNFEHLER(INDEX($B$2:$B$22;VERGLEICH(9^99;SUCHEN($B$2:$B$52;A2)));"Keep")

使用这个翻译工具(在其他情况下对我有用),我得到以下结果:

在此处输入图像描述

这是另一个,而不是杰里的结果。

标签: excelexcel-formula

解决方案


如果只能有 1 个匹配项,则可以在数组公式中使用和(使用INDEX++ ,如果操作正确,您将在公式栏中的公式周围看到花括号):MATCHCtrlShiftEnter

=IFERROR(INDEX($B$2:$B$22,MATCH(9^99,SEARCH($B$2:$B$22,A2))),"Keep")

在此处输入图像描述

如果有多个匹配项,您将使用上述公式获得最后一个匹配项。如果您希望在这种情况下返回第一个公式,您将不得不使用--ISNUMBER搜索功能,使用 1 作为第一个参数MATCH并使用精确匹配(即使用0/FALSE作为MATCH.

当然,COUNTIF(A2,"*"&B$2:$B$22&"*")在这种情况下,您可以在公式的内部使用而不是--ISNUMBER(...).


推荐阅读