【问题标题】:Autofilter a Range excluding two dates自动过滤不包括两个日期的范围
【发布时间】:2016-07-27 14:53:18
【问题描述】:

我有以下代码,在 L1 中,我想选择除昨天和今天之外的所有日期,在 M1 中取消全选。我可以在 M1 中执行相同的操作,但无法在 L1 中执行操作。

Range("L1").Select
ActiveSheet.Range("$A$1:$U$3804").AutoFilter Field:=12, Operator:= _
    xlFilterValues, Criteria2:=Array(1, "2/11/2016", 1, "3/31/2016", 2, "4/5/2016", 2, _
    "4/6/2016", 2, "4/7/2016", 2, "4/8/2016", 2, "4/11/2016", 2, "4/12/2016", 2, "4/13/2016", _
    2, "4/14/2016", 2, "4/15/2016", 2, "4/18/2016", 2, "4/19/2016", 2, "4/20/2016", 2, _
    "4/21/2016", 2, "4/22/2016", 2, "4/25/2016", 0, "10/28/2015")
Range("M1").Select
ActiveSheet.Range("$A$1:$U$3804").AutoFilter Field:=13, Criteria1:="="

来自用户的评论:

我有从 A 列到 U 列的数据。我在每一列中都有许多标准可供选择。在 L 列中只有日期。我想要实现的是取消选择昨天和今天的日期并选择所有其他日期。而已。我的任务会在那里完成

【问题讨论】:

  • 你不能用自动过滤来做这件事。使用字典为过滤条件构建一个数组。
  • 谢谢@Jeeped 我试过这样做,但我无法将它保存到昨天和今天的日期......请帮助我提供代码。
  • 没问题,但您的数据模式不清楚。 L 列是否同时包含整数和日期?您想要所有这些以及 M 列中的所有空白吗? A:U 中是否有任何列是唯一的?你可以手动完成还是无法手动完成?
  • 在 L 列中只有日期值,其余的我已经完成。我想从 L 列的范围中获取未过滤的日期。我可以手动完成,但不能通过代码完成。 A:U 中没有独特的价值。
  • OK,这样您就可以成功过滤L列中的日期。如果您想“取消过滤”列 L,请使用 ActiveSheet.Range("$A$1:$U$3804").AutoFilter Field:=12(无其他参数)。

标签: vba excel date autofilter


【解决方案1】:

在 L 列中只有日期。我想要实现的是取消选择昨天和今天的日期并选择所有其他日期。而已。

过滤所有不是今天或昨天的日期。

Option Explicit

Sub notTodayOrYesterday()
    With Worksheets("Sheet5")
        If .AutoFilterMode Then .AutoFilterMode = False
        With .Cells(1, 1).CurrentRegion
            .AutoFilter Field:=12, Criteria1:=Format(Date, "\<\>mm/dd/yyyy"), _
                        Operator:=xlAnd, Criteria2:=Format(Date - 1, "\<\>mm/dd/yyyy")
        End With
        If .AutoFilterMode Then .AutoFilterMode = False
    End With
End Sub

请注意,这是在具有 MDY 区域设置的计算机系统上进行的测试。如果它不适合您并且您的系统是 DMY,请更改日期格式。


            应用自动过滤之前


            应用自动过滤后(在 End Sub 之前)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-01
    • 2011-03-22
    • 1970-01-01
    • 2015-10-25
    • 2015-11-21
    • 1970-01-01
    • 2013-10-19
    • 2019-03-05
    相关资源
    最近更新 更多