【问题标题】:Find all rows that are NOT in a date range using VBA使用 VBA 查找不在日期范围内的所有行
【发布时间】: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


【解决方案1】:
Dim today As Date
Dim strDate As Date
Dim endDate As Date
today = Date
strDate = DateAdd("d", -7, today)
endDate = DateAdd("d", -1, today)


'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, _
        Criteria1:="<" & strDate, Operator:=xlOr, Criteria2:=">" & endDate

使用小于或大于您想要的日期作为标准。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-19
    • 2016-09-22
    • 2016-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-13
    • 2021-09-07
    相关资源
    最近更新 更多