日期筛选器通过Excel VBA隐藏所有单元格

时间:2018-05-14 13:18:21

标签: excel vba excel-vba excel-2016

我正在使用以下内容过滤掉特定日期,但它会隐藏所有单元格,并且不会留在所需的数据中。手动完成时,它工作正常,当我将范围更改为最后一行( $ 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 :(得分:0)

如果您想动态设置范围。

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

答案 1 :(得分:0)

使用&#34; yyyy / mm / dd&#34;代码中的日期格式 - JK2017

工作谢谢