【问题标题】:Filtering an Excel table by period between two dates in VBA按VBA中两个日期之间的时间段过滤Excel表格
【发布时间】:2021-12-16 20:35:47
【问题描述】:

我想在 VBA 中按日期过滤大型 Excel 表格。当我使用“Between”过滤器手动完成时,它可以工作(参见Screenshot 1Screenshot 2)。

如果我同时运行“录制宏”功能,它也可以工作,我得到以下代码:

ActiveSheet.ListObjects("Table5").Range.AutoFilter Field:=4, Criteria1:= _
  ">=15/09/2021", Operator:=xlAnd, Criteria2:="<=17/10/2021"

但是,当我尝试运行生成的宏时,它会过滤掉所有记录:

找到 2972​​5 条记录中的 0 条

这是我尝试过的:

  1. 检查堆栈溢出问题#40820757#23132653
  2. 检查该字段确实是日期格式:是的。
  3. 进入 Windows 中的“更改日期和时间格式”菜单并检查我系统中的本地短日期格式:“DD/MM/YYYY”。
  4. 尝试了以下代码,结果相同:

Dim Date1 As Date
Dim Date2 As Date

Date1 = CDate("15/09/2021")
Date2 = CDate("17/10/2021")

ActiveSheet.ListObjects("Table5").Range.AutoFilter Field:=4, Criteria1:= _
  ">=" & Date1, Operator:=xlAnd, Criteria2:="<=" & Date2

您知道如何解决此问题吗?谢谢。

【问题讨论】:

    标签: excel vba date filter


    【解决方案1】:

    尝试按照以下代码更改日期格式。

    Sub Macro1()
        Date1 = Format("15/09/2021", "mm/dd/yyyy")
        Date2 = Format("17/10/2021", "mm/dd/yyyy")
        
        ActiveSheet.ListObjects("Table1").Range.AutoFilter Field:=4, Criteria1:= _
          ">=" & Date1, Operator:=xlAnd, Criteria2:="<=" & Date2
    End Sub
    

    【讨论】:

    • 这解决了问题,非常感谢。为了使这个解决方案有效,我还将 Date1 和 Date2 的类型从 Date 更改为 String。
    猜你喜欢
    • 2017-04-10
    • 2014-06-01
    • 2019-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-04
    相关资源
    最近更新 更多