Sam*_*son 6 microsoft-excel-2007 microsoft-excel
我有一张大桌子,看起来像这样:
ID String
1 abcde
2 defgh
3 defgh
4 defgh
5 ijkl
6 ijkl
7 mnop
8 qrst
Run Code Online (Sandbox Code Playgroud)
我想通过填充过滤值列表来选择性地隐藏行。例如,我想过滤掉(隐藏)包含“ef”、“kl”和“qr”的所有行。是否有捷径可寻?
我知道如何使用高级过滤器,以包括只包含这些子,但不是反转行。有没有人这样做过?
您仍然可以使用高级过滤器。以下是您如何使用它来解决您的问题:
这是一种排除或隐藏包含子字符串“ef”的单元格的方法。

结果:

这是A13 中的公式:
=ISERROR(SEARCH($B$13,B2))
Run Code Online (Sandbox Code Playgroud)
其工作原理与: =ISERROR(SEARCH("ef",B2))
注意绝对引用和相对引用的使用。第二个引用 ( B2 ) 指向数据范围中的第一项;为了使过滤器工作,它需要是relative。指向您不想包含的文本子字符串的引用必须是绝对的。
此外,Criteria 范围需要有一个空白标题;尽管您在设置高级过滤器时已将其包含在内(请参阅屏幕中的标准范围字段)。
此示例隐藏包含子字符串“ef”、“j”和“rs”的单元格。

结果:

这次是A13的公式:
=AND(ISERROR(SEARCH($B$13,B2)),
ISERROR(SEARCH($B$14,B2)),
ISERROR(SEARCH($B$15,B2)))
Run Code Online (Sandbox Code Playgroud)
或者你可以使用:
=AND(ISERROR(SEARCH("ef",B2)),
ISERROR(SEARCH("j",B2)),
ISERROR(SEARCH("rs",B2)))
Run Code Online (Sandbox Code Playgroud)
我能想到的一种简单且完全不优雅的方法是设置另一列来检查目标列中的值是否包含过滤字符串。
你的公式看起来像
=IF(ISNUMBER(FIND("ef",B2)),1,0)+IF(ISNUMBER(FIND("kl",B2)),1,0)+IF(ISNUMBER(FIND("qr",B2)),1,0)
然后您可以自动筛选 0。