【问题标题】:Excel advanced filter with exclusion带排除的 Excel 高级过滤器
【发布时间】:2021-08-16 18:26:48
【问题描述】:

我有类似的行 用户名

user@example.com
partner.someone@example.com   <== I want to exclude this.
john@example.com
tom@example.com

我可以定义一个标准合作伙伴,它可以正确过滤。

但是我想排除包含合作伙伴的行。我尝试过关注,但不排除这些行。我也试过去掉它周围的星星。

Username     
<>*partner*

【问题讨论】:

  • 我尝试使用文本过滤器并且它有效。你遇到了什么问题?
  • 是的,文本过滤器有效。高级过滤器被贬低了吗?我在 Office 365 中看不到。
  • @EvilBlueMonkey 问题是高级过滤器无法正确过滤否定标准,如 OP 中所述
  • 那么问题解决了吗?
  • 排除带有partner的任何内容:=FILTER($A$1:$A$4,IFERROR(SEARCH("partner",$A$1:$A$4),"")="")

标签: excel filter


【解决方案1】:

高级过滤器

我定义了以下范围名称:

  • af01_source:=Table1!$B$4:$B$8
  • af01_criteria:=Table1!$D$4:$D$5
  • af01_target:=Table1!$F$4

打开高级过滤器,在对应字段中包含范围名称,点击ok,得到如下输出:

我用宏记录器记录了这个动作并收到了以下代码(经过一些修饰后):

Sub run_af()
    Range("af_source").AdvancedFilter _
        Action:=xlFilterCopy, _
        CriteriaRange:=Range("af_criteria"), _
        CopyToRange:=Range("af_target"), _
        Unique:=False
End Sub

如您所见,高级过滤器能够执行您想要的否定。

您是否尝试过缩短的示例? 还是您在尝试过滤多个条件时遇到问题?

顺便说一句

取反的方式与自动过滤器/文本过滤器相同:

ActiveSheet.Range("$B$4:$B$8").AutoFilter _
      Field:=1, _
      Criteria1:= "<>*partner*", _
      Operator:=xlAnd

【讨论】:

    【解决方案2】:

    为什么不使用辅助列

    即 假设 A1 是数据的第一个单元格,您的数据在 A 列中

    在B1做

    =IF(A1="","",IFERROR(SEARCH("partner",A1),2))
    

    在 C1 中使用过滤器

    =FILTER(A1:A10,B1:B10=2,"")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-03
      相关资源
      最近更新 更多