我需要应用自动过滤器显示除第 1 列的每月 15 日和 26 日以外的所有日期
您可以使用一系列相关日期来实现您想要的。
逻辑:创建一个数组,然后使用Criteria2参数进行过滤。例如,如果你录制一个宏,你会得到类似Criteria2:=Array(2, "1/1/2020", 2, "1/4/2020", 2, "1/6/2020").... 数组的第一维是时间段组。 2 适用于天。
这是你正在尝试的吗?
Option Explicit
Sub Sample()
Dim ws As Worksheet
Dim rng As Range
Dim lRow As Long, i As Long
Dim DateArray As Variant
Dim tmpDateString As String: tmpDateString = "2"
'~~> Set your worksheet here
Set ws = Sheet2
With ws
'~~> Remove any autofilter
.AutoFilterMode = False
'~~> Find the last row
lRow = .Range("A" & .Rows.Count).End(xlUp).Row
'~~> Check if there is any data
If lRow > 1 Then
'~~> Construct your range
Set rng = .Range("A1:A" & lRow)
'~~> Create a string with relevant dates
For i = 2 To lRow
Select Case Day(.Range("A" & i).Value)
Case 15, 16
Case Else
tmpDateString = tmpDateString & "," & .Range("A" & i).Value & ",2"
End Select
Next i
End If
'~~> Split and store in an array
tmpDateString = Mid(tmpDateString, 1, Len(tmpDateString) - 2)
DateArray = Split(tmpDateString, ",")
'~~> Autofilter using an array
rng.AutoFilter Field:=1, Criteria2:=DateArray, Operator:=xlFilterValues
End With
End Sub
行动中
如果我可以让它只显示 15 日和 26 日,那将与即时过滤以删除未使用的日期一样有效。 – 马修·威尔科克斯 1 小时前
在Select Case 中交换Case 代码。试一试;)