如何按日期过滤行

时间:2015-11-28 03:59:34

标签: excel vba excel-vba

我是VBA Excel的新手。我想选择特定列中的所有值,其中另一列中的关联日期在特定范围内。

我对AutoFilter的尝试似乎进展不顺利。此代码过滤了正确范围内的日期,但我无法将其包含在第一行:

Columns("B:B").AutoFilter Field:=1, _
    Criteria1:=">=" & startDate, _
    Operator:=xlAnd, _
    Criteria2:="<=" & endDate, _
    VisibleDropDown:=False

我不清楚使用“Field”参数。此外,MS文档声称“Field”是Variant类型的可选参数,但仍保留Integer,但Excel VBA编辑器会抱怨我是否使用它。

2 个答案:

答案 0 :(得分:1)

field是您要应用过滤器的列。由于您使用的是单个列(例如Columns("B:B")),因此必须 1 。即,列B是 1 ,而且列B中只有列,因此它是Field:=1

[Optional]可能不是描述AutoFilter Methodfield参数的最佳方式,但由于您可以单独使用.AutoFilter而没有参数来重置过滤器,严格来说,所有参数都是可选的但是,当您应用标准时,它不是可选的,文档应该反映出来。

with Columns(2)
    'turn .AutoFilter on
    .AutoFilter Field:=1, Criteria1:=">=" & startDate, _
        Operator:=xlAnd, Criteria2:="<=" & endDate, _
        VisibleDropDown:=False
    'do stuff here
    'turn .AutoFilter off
    .AutoFilter
End With

答案 1 :(得分:1)

您可以添加其他自动过滤器以进一步优化结果,如下所示:

''1st criteria for the dates

    Sheets("Your sheet").range("Your range").autofilter field =1,Criteria1:=">=" & startDate, Operator:=xlAnd, Criteria2:="<=" & endDate 

''2nd Criteria for text in field 2 for eg

    Sheets("Your sheet").range("Your range").autofilter field =2,Criteria1:="text"