如何过滤dynamic多个date的VBA

我几乎是新的vba和我的问题是,我需要过滤出一个表中的具体date。

逻辑是每周过滤不需要的date。 例如,我的原始数据包含2017年10月29日至2017年11月11date间的date,仅需要date为2017年5月10日至2017年5月10日。 我试图logging一个macros,但我需要它是dynamic的,因为这是每周运行。

这是我迄今得到的代码。

ActiveSheet.ListObjects("Table6").Range.AutoFilter Field:=7, Operator:= _ xlFilterValues, Criteria2:=Array(2, "10/30/2017", 2, "10/31/2017", 2, "11/1/2017", _ 2, "11/2/2017", 2, "11/3/2017", 2, "11/4/2017", 2, "11/5/2017") 

希望有人帮助! 提前致谢

尝试两个“肩”date之间(作为文本)。

 Dim d1 As String, d2 As String d1 = Format(Date - Weekday(Date, vbThursday), "\>\=mm/dd/yyyy") d2 = Format(Date - Weekday(Date, vbThursday) + 6, "\<\=mm/dd/yyyy") With ActiveSheet.ListObjects("Table6") .Range.AutoFilter Field:=7, Operator:=xlAnd, _ Criteria1:=d1, Criteria2:=d2 End With 

我写了一个函数,它可以返回由给定date之后的星期组成的数组。 我编辑的function,以便您可以input一个date,这将在该date后一个星期,或两个date,这将生成2个给定date之间的date数组。

 Private Function GenWeek(ByVal Day1 As Date, Optional ByVal Day2 As Date) As Variant Dim Week() As Variant If Day2 <> 0 Then ReDim Week(1 To (Day2 - Day1 + 1) * 2) As Variant Else ReDim Week(1 To 14) As Variant End If For i = 1 To UBound(Week) / 2 Week(i * 2 - 1) = 2 Week(i * 2) = Day1 + i - 1 Next i GenWeek = Week End Function 

而你的代码可以被重写为如下。

 ActiveSheet.ListObjects("Table6").Range.AutoFilter Field:=7, Operator:= _ xlFilterValues, Criteria2:=GenWeek(Date)