首页 > 解决方案 > 根据今天的日期和特定时间范围过滤数据

问题描述

我的 Excel 表上有一组每天都会刷新的数据。我需要每天通过excel VBA自动将系统日期过滤为E列上的今天日期和F列上的系统时间,时间为0730到1930之间。我该怎么做?

我试过使用

Sub DateNTimeFilter()

Dim DateToday As Date
DateToday = Today()

Selection.AutoFilter
ActiveSheet.Range("E1:E").Autofilter Field=5, Operator:=x1Filtervalues, Criteria:=TodayDate

标签: excelvbafilterexcel-formulaautofilter

解决方案


您发布的代码存在许多问题。

全部清理后应该是这样的:

Sub DateNTimeFilter()

Sheet1.Range("A:E").AutoFilter Field:=5, Operator:=xlFilterValues, Criteria1:=Format(Date,"dd/mm/yyyy")

End Sub

首先,Today()它不是标准的 VBA 函数,除非您编写了代码。改为使用Date

您也 dim DateToday,但TodayDate在您的自动过滤器中使用。

您还启动自动过滤器两次,一次用于选择,一次用于您的活动表范围 E1:E。第一位是多余的,因此可以省略。

您的范围E1:E是不正确的范围,要么使用它,要么E:E完全忽略它。由于您field:=5已经使用了第 5 列(E)。

您拼写错误xlFilterValues,忘记指定Criteria1,因为您总是需要指定标准 1 或 2。

如果您使用的是今天的日期,则无需进行计算,因此您可以将其直接插入自动过滤器。我要添加的唯一内容是format清理它并匹配您的日期书写方式的声明。

编辑:为此添加开始和结束时间比这更具挑战性,但下面应该这样做。

Sub DateNTimeFilter()
Dim in_time As Double, out_time As Double

in_time = Date + TimeValue("07:30")
out_time = Date + TimeValue("19:30")

Sheet1.Range("A:A").AutoFilter Field:=1, Operator:=xlAnd, Criteria1:=">=" & in_time, Criteria2:="<=" & out_time

End Sub

推荐阅读