2013-09-05 3 views
2

Следующий код фильтрует диапазон дат по датам в августеExcel Автофильтр дата в месяце период

ActiveSheet.Range("$A$29:$CG$3582").AutoFilter field:=18, Criteria1:= _ 
    xlFilterAllDatesInPeriodAugust, Operator:=xlFilterDynamic 

Как сделать этот код динамическим, так что я могу выбирать диапазон любого месяца (например, месяц (Cегодня()))?

ответ

0

Законченное делать ...

Function GetDatesInPeriodConst(month As Long) 
    GetDatesInPeriodConst = 20 + month 
    '(January is number 21) 
End Function 

и

ActiveSheet.Range("$A$29:$CG$3582").AutoFilter field:=18, Criteria1:= _ 
GetDatesInPeriodConst(month(Date)), Operator:=xlFilterDynamic 
2

Попробуйте Criteria2, но это немного загадочно. Перейдите Array(1, datestring), где 1 будет фильтровать весь месяц этой даты, а значение даты должно быть в формате m/d/y.
(0 = весь год, 2 = день и еще несколько, как обсуждалось somewhere here).

Dim s As String 
s = Format(Now, "MM""/""dd""/""yyyy") 

ActiveSheet.Range("$A$29:$CG$3582").AutoFilter _ 
    Field:=18, Operator:=xlFilterValues, _ 
    Criteria2:=Array(1, s)