使用单元格值作为日期范围自动过滤器

时间:2016-08-31 06:26:21

标签: excel vba excel-vba

我正在尝试使用从2个单元格中提取的范围来调整我的日期自动过滤器。

尝试失败后,我决定使用宏构建器执行宏,以便我可以调整它以适应我的代码,最后我得到了:

Dim fI As Range
Dim fF As Range

Set fI = Worksheets("Sheet1").Range("B26")

Set fF = Worksheets("Control").Range("B27")


    ActiveSheet.ListObjects("TABLE_REPORTS_GENERAL_INFO").Range _
        .AutoFilter Field:=24, Criteria1:=fI.Value, Operator:=xlAnd, _
        Criteria2:=fF.Value

日期格式正确,但只是让过滤器清洁。硬编码日期是有效的,我做错了什么?

我的约会结构:

Starting Date   01/08/2015
Last Date   31/07/2016

2 个答案:

答案 0 :(得分:1)

我注意到你处于DMY日期格式。我将尽力遵守该地区标准。

使用数据类型为Criteria2的数组。

With ActiveSheet
    With .ListObjects("TABLE_REPORTS_GENERAL_INFO")
        .Range.AutoFilter Field:=13, Operator:=xlFilterValues, _
            Criteria2:=Array(2, Format(fi.Value, "d/m/yyyy"), 2, Format(ff.Value, "d/m/yyyy"))
    End With
End With

那应该过滤两个日期。但是,如果您想要开始日期和结束日期之间的所有日期,那么您需要引入运算符。

With ActiveSheet
    With .ListObjects("TABLE_REPORTS_GENERAL_INFO")
        .Range.AutoFilter Field:=13, _
            Criteria1:=Format(fi.Value, "\>\=d/m/yyyy"), Operator:=xlAnd, _
            Criteria2:=Format(ff.Value, "\<\=d/m/yyyy")
    End With
End With

答案 1 :(得分:0)

您要将第二个范围分配给fechaFin,但稍后您只使用fF,因此请尝试分配您的范围:Set fF = Worksheets("Control").Range("B27")

因为现在fF.Value是一个空字符串,可能会重置过滤器