我的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
答案 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