首页 > 解决方案 > 按VBA中两个日期之间的时间段过滤Excel表格

问题描述

我想在 VBA 中按日期过滤大型 Excel 表格。当我使用“Between”过滤器手动完成时,它可以工作(请参阅屏幕截图 1屏幕截图 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

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

标签: excelvbadatefilter

解决方案


尝试更改日期格式,如下面的代码所示。

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

推荐阅读