【发布时间】:2014-03-31 10:26:21
【问题描述】:
我正在通过为每周处理的报告编写宏来自学 VBA。在此报告中,我需要按日期过滤大量数据(约 4000 行)。我的目标是删除任何开始日期不在上周的行。我编写了以下函数来仅显示我想保留的数据,但是当我意识到我想摆脱所有未显示的数据时,我就卡住了。
Sub LimitDates()
'Define date variables
Dim today As Date
Dim strDate As Date
Dim endDate As Date
Dim dateArray(6) As Date
today = Date
strDate = DateAdd("d", -7, today)
endDate = DateAdd("d", -1, today)
dateArray(0) = strDate
dateArray(1) = strDate + 1
dateArray(2) = strDate + 2
dateArray(3) = strDate + 3
dateArray(4) = strDate + 4
dateArray(5) = strDate + 5
dateArray(6) = strDate + 6
'Define Row Count
originalRowCount = Cells(Rows.Count, 1).Row
'Filters to only relevent dates
Range("A1:I1").Select
Selection.AutoFilter
ActiveSheet.Range("A1").Resize(RowSize:=originalRowCount, _
ColumnSize:=9).AutoFilter Field:=5, Operator:= xlFilterValues, _
Criteria2:=Array(2, dateArray(0), 2, dateArray(1), 2, dateArray(2), _
2, dateArray(3), 2, dateArray(4), 2, dateArray(5), 2, dateArray(6))
End Sub
我确信有很多方法可以使上述代码变得更好,但我的问题是:如何过滤“坏”日期而不是过滤“好”日期(我的日期范围之前和之后的所有内容) )?*
【问题讨论】:
-
一个更简单的过滤你想要的方法是 ActiveSheet.Range("A1").Resize(RowSize:=originalRowCount, ColumnSize:=9).AutoFilter Field:=5, Criteria1:=xlFilterLastWeek , 运算符:=xlFilterDynamic
标签: excel vba date range autofilter