根据今天的日期和特定时间范围过滤数据

时间:2019-11-25 07:55:40

标签: excel vba filter excel-formula autofilter

我的Excel工作表中每天都有一组刷新的数据。 我需要每天通过excel VBA自动将系统日期过滤为E列上的今天的日期和07时至1930年之间的E列中的今天的日期。 我应该怎么做?

我尝试使用

Sub DateNTimeFilter()

Dim DateToday As Date
DateToday = Today()

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

1 个答案:

答案 0 :(得分:1)

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

所有清理后的内容应如下所示:

Sub DateNTimeFilter()

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

End Sub

首先,Today()不是标准的VBA函数,除非您已经编写了一个函数。请改用Date

您也使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
相关问题