我需要在Excel中对日期进行过滤。标准是从当前日期减去3天,并应显示之后的所有日期。我不确定在下面的代码中我在做什么错。
Sub filterTime()
Dim currDate as Date, oldDate as Date
currDate = Now
oldDate = currDate - 3
ActiveSheet.Range("$A$1:$W$8722").AutoFilter Field:=19, Criterial:=_">=" & oldDate, Operator:=xlAnd
答案 0 :(得分:2)
不要对Date
值进行数学运算。 DateTime
模块提供特定于DateTime
的功能,这些功能使currDate
变量完全冗余。即,DateAdd
函数-专门用于将各种“时间单位”添加到给定的Date
值中。
Dim filterDate As Date
filterDate = DateTime.DateAdd("d", -3, DateTime.Now)
此外,由Date
返回的DateTime.Now
值将包含您可能不想在过滤器中使用的 time 部分(如果是这种情况,请考虑使用DateTime.Date
)。通过将">="
与一个Date
值进行串联,您可以将该Date
隐式转换为String
,并将其留给VBA来决定该字符串表示形式如何。使用Strings.Format
函数为该字符串指定显式格式:
Dim filterCriteria As String
filterCriteria = ">=" & Strings.Format(filterDate,"mm/dd/yyyy")
ActiveSheet.Range("$A$1:$W$8722").AutoFilter Field:=19, Criterial:=filterCriteria, Operator:=xlAnd