мне нужно применить автофильтр, чтобы показать все даты, кроме 15 и 26 числа месяца для столбца 1
Вы можете достичь желаемого, используя массив соответствующих дат.
Logi c: создать массив и затем использовать параметр 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 час go
Поменяйте код Case
на Select Case
. Попробуй;)