Фильтр между 2 диапазонами дат - PullRequest
0 голосов
/ 02 января 2019

Я бы хотел отфильтровать 1 серию данных между двумя диапазонами дат.

Диапазон дат 1: переход со вчерашней даты на 28 дней назад.
Диапазон дат 2: возврат на один год со вчерашнего днядата до 28 дней назад.

Для фильтрации по одному диапазону дат у меня работает этот код:

Sub DateFilter()

Dim StartDateTY As Date
Dim EndDateTY As Date
StartDateTY = Date - 29
EndDateTY = Date - 1

Sheets("Main").Range("$A$4:$O$5000").AutoFilter Field:=2, _
 Criteria1:=">=" & CDbl(StartDateTY), Operator:=xlAnd, _
 Criteria2:="<=" & CDbl(EndDateTY)

End Sub

Я думал, что могу использовать массивы для использования 2 разных диапазонов дат, но не могузаставить его работать.

Sub DateFilter2Ranges()

Dim StartDateTY As Date
Dim EndDateTY As Date
StartDateTY = Date - 29
EndDateTY = Date - 1

Dim StartDateLY As Date
Dim EndDateLY As Date
StartDateLY = Date - 29 - 365
EndDateLY = Date - 1 - 365

Sheets("Main").Range("$A$4:$O$5000").AutoFilter Field:=2, _
  Criteria1:=Array(0, ">=" & CDbl(StartDateTY), 0, ">=" & CDbl(StartDateLY)), Operator:=xlAnd, _
  Criteria2:=Array(1, "<=" & CDbl(EndDateTY), 1, "<=" & CDbl(EndDateLY))

End Sub

Я также подумал, что могу смешать операторы 'И' и 'ИЛИ', если это возможно.

1 Ответ

0 голосов
/ 05 января 2019

Для работы с датами в автофильтре необходимо знать одну вещь - автофильтр распознает только Формат даты в США: месяц / день / год .

Sub FFF()

    Dim dt1 As Date, dt2 As Date
    Dim sDate1$, sDate2

    '// Get dates
    dt1 = Now - 29: dt2 = Now - 1

    '// Format dates
    sDate1 = Format(dt1, "MM\/yy\/yyyy")
    sDate2 = Format(dt2, "MM\/yy\/yyyy")

    With Sheets("Main").Range("A1").CurrentRegion
        .AutoFilter
        .AutoFilter Field:=2, Criteria1:=">=" & sDate1, Operator:=xlAnd, Criteria2:="<=" & sDate2

    End With

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...