Фильтр даты, скрывающий все ячейки через Excel VBA - PullRequest
0 голосов
/ 14 мая 2018

Я использую ниже для фильтрации конкретных дат, однако он скрывает все ячейки и не оставляет в необходимых данных.После завершения вручную он работает нормально, он также работает, когда я изменяю диапазон на последнюю строку ( $ AL1210 ), однако этот диапазон будет увеличиваться, поскольку я буду вставлять новые данные ежедневно.

Я пытаюсь найти решение для идеального автоматического увеличения диапазона до последней строки (хотя я пробовал это из других ответов и получаю тот же результат, поскольку я не понимаю, почему фильтр неработа, кто-нибудь может мне помочь с этим?

Sub Auto_Filter()
    `Auto_Filter Macro
    `This Auto Filters all data for years 2017 & 2018, this also sorts to newest date first
    Keyboard Shortcut: Ctrl+Shift+A
    Sheets("Paste Data").Select
    ActiveSheet.Range("$A$1:$AL$10000").AutoFilter Field:=9, Criteria1:= _
        ">=01/01/2017", Operator:=xlAnd, Criteria2:="<=31/12/2018"
    ActiveWorkbook.Worksheets("Paste Data").AutoFilter.Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Paste Data").AutoFilter.Sort.SortFields.Add Key:= _
        Range("I1:I10000"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption _
        :=xlSortNormal
    With ActiveWorkbook.Worksheets("Paste Data").AutoFilter.Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub

Ответы [ 2 ]

0 голосов
/ 14 мая 2018

используйте формат даты "гггг / мм / дд" в своем коде - JK2017

Работает, спасибо

0 голосов
/ 14 мая 2018

Если вы хотите установить диапазон динамически.

Dim rng As Range, sh As Worksheet
Set sh = Sheets("Paste Data")
With sh
    Set rng = .Range("A1:AL" & .Cells(.Rows.Count, "AL").End(xlUp).Row)

End With
...