我使用一种模糊匹配过滤器,它基于带有过滤器列表的其他列。公式是:
=IF(SUMPRODUCT(COUNTIF(A2,"*"&B$2:$B$22&"*"))>0,"Delete","Keep")
实际上有两个公式,它们的作用方式相同-它们是在实验中创建的。第二个是:
=IF(SUMPRODUCT(--ISNUMBER(SEARCH($B$2:$B$22,A2))),"Delete","Keep")
Q :如何编写而不是“删除” 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")
使用this翻译工具(在其他情况下为我工作,没有错误),我得到以下结果:
这是另一个,而不是杰里的结果。
答案 0 :(得分:1)
如果只有1个匹配项,则可以在数组公式中使用INDEX
和MATCH
(使用 Ctrl + Shift + 输入,如果操作正确,则会在公式栏中看到公式周围的卷曲括号):
=IFERROR(INDEX($B$2:$B$22,MATCH(9^99,SEARCH($B$2:$B$22,A2))),"Keep")
如果有多个匹配项,则将使用上述公式获得最后一个匹配项。如果您希望在这种情况下返回第一个公式,则必须在搜索函数周围使用--ISNUMBER
,将MATCH
的第一个参数使用1并使用完全匹配(即使用{{1} } / 0
作为FALSE
的第三个参数。
当然,在这种情况下,您可以对公式的内部部分使用MATCH
而不是COUNTIF(A2,"*"&B$2:$B$22&"*")
。
答案 1 :(得分:0)
对于所有感兴趣的人:这个公式可以解决问题:
=IFERROR(LOOKUP(9.99E+307,SEARCH(B$2:B$22,A2),B$2:B$22),"Keep")