[英]Filter between 2 date ranges
我想在2个日期范围之间过滤1个数据。
日期范围1:从昨天的日期返回到之前的28天。
日期范围2:从昨天的日期追溯到一年前的28天。
为了过滤到一个日期范围,我可以使用以下代码:
Sub DateFilter()
Dim StartDateTY As Date
Dim EndDateTY As Date
StartDateTY = Date - 29
EndDateTY = Date - 1
Sheets("Main").Range("$A$4:$O$5000").AutoFilter Field:=2, _
Criteria1:=">=" & CDbl(StartDateTY), Operator:=xlAnd, _
Criteria2:="<=" & CDbl(EndDateTY)
End Sub
我当时以为我可以使用数组来使用2个不同的日期范围,但不能使其正常工作。
Sub DateFilter2Ranges()
Dim StartDateTY As Date
Dim EndDateTY As Date
StartDateTY = Date - 29
EndDateTY = Date - 1
Dim StartDateLY As Date
Dim EndDateLY As Date
StartDateLY = Date - 29 - 365
EndDateLY = Date - 1 - 365
Sheets("Main").Range("$A$4:$O$5000").AutoFilter Field:=2, _
Criteria1:=Array(0, ">=" & CDbl(StartDateTY), 0, ">=" & CDbl(StartDateLY)), Operator:=xlAnd, _
Criteria2:=Array(1, "<=" & CDbl(EndDateTY), 1, "<=" & CDbl(EndDateLY))
End Sub
我还认为,如果可能的话,我可以混合使用'And'和'Or'运算符。
为了在自动过滤器中使用日期,您需要了解一件事-自动过滤器只能识别美国日期格式: month / day / year 。
Sub FFF()
Dim dt1 As Date, dt2 As Date
Dim sDate1$, sDate2
'// Get dates
dt1 = Now - 29: dt2 = Now - 1
'// Format dates
sDate1 = Format(dt1, "MM\/yy\/yyyy")
sDate2 = Format(dt2, "MM\/yy\/yyyy")
With Sheets("Main").Range("A1").CurrentRegion
.AutoFilter
.AutoFilter Field:=2, Criteria1:=">=" & sDate1, Operator:=xlAnd, Criteria2:="<=" & sDate2
End With
End Sub
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.