我一直在尝试使用VBA过滤当前年份中任何日期的特定列(动态)加上任何空白单元格。
这就是我所拥有的:
ActiveSheet.Range("A1", "HZ" & LastRow).AutoFilter Field:=60, Criteria1:="=", Operator:=xlOr, Criteria2:=xlFilterThisYear, Operator:=xlFilterDynamic
Criteria1过滤器为空白和标准2过滤了今年的动态过滤器。
单独使用时,它们都可以工作,但是当我希望它们一起工作时,只有最快的标准才有效。顺便说一句,我已经尝试过xlAnd和xlOr以防万一!!
当我录制宏来执行此操作时,我记录了以下语句:
ActiveSheet.Range("A1", "HZ" & LastRow).AutoFilter Field:=60, Criteria1:=Array("="), Operator:=xlFilterValues, Criteria2:=Array(0, "3/2/2018").
这很有效,但正如你所看到的,那里有一个艰难的约会,我需要每周更换一次,所以我想要一个更好的解决方案。
答案 0 :(得分:0)
希望您可以使用此代码为Autofilter
提供动态过滤器值:
Dim startDate As Long,
Dim enddate As Long
startDate = Range("B1")
Enddate = Range("B2")
Range("D2:D123").AutoFilter Field:=1,
Criteria1:=">=" & startDate, _ Operator:=xlAnd, _ Criteria2:="<=" &
Enddate
答案 1 :(得分:0)
这将隐藏一年中第一年之前的所有日期和第60列中的空单元格。如果要隐藏当前年份的日期,请更改&#34;&lt;&#34;到&#34;&gt;&#34;。要撤消hiddne行,请使用此代码Rows.EntireRow.Hidden = False
Dim ws As Worksheet, lRow As Long, i As Long
Set ws = ActiveSheet
lRow = ws.Cells(Rows.Count, 60).End(xlUp).row
Dim CurYr As Double
CurYr = DateSerial(Year(Date), 1, 1)
For i = 1 To lRow
If Cells(i, 60) < CurYr Or Cells(i, 60) = "" Then
Rows(i).Hidden = True
End If
Next