我是VBA Excel的新手。我想选择特定列中的所有值,其中另一列中的关联日期在特定范围内。
我对AutoFilter的尝试似乎进展不顺利。此代码过滤了正确范围内的日期,但我无法将其包含在第一行:
Columns("B:B").AutoFilter Field:=1, _
Criteria1:=">=" & startDate, _
Operator:=xlAnd, _
Criteria2:="<=" & endDate, _
VisibleDropDown:=False
我不清楚使用“Field”参数。此外,MS文档声称“Field”是Variant类型的可选参数,但仍保留Integer,但Excel VBA编辑器会抱怨我是否使用它。
答案 0 :(得分:1)
field
是您要应用过滤器的列。由于您使用的是单个列(例如Columns("B:B")
),因此必须 1 。即,列B是 1 ,而且列B中只有列,因此它是Field:=1
。
[Optional]
可能不是描述AutoFilter Method的field
参数的最佳方式,但由于您可以单独使用.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"