Excel数据透视表:无法过滤日期

时间:2017-01-19 18:38:19

标签: excel vba datefilter

我需要过滤数据的数量,以显示包含一个特定日期或将日期字段留空。

下面的宏适用于数字和文本(自然的小修正),但我不能使它与日期条目一起使用。没有编码日期值以避免任何与语言相关的问题。

Sub YesterdayBlank()
    ActiveSheet.PivotTables("PivotTable2").ClearAllFilters
    Dim yesterday As String
    yesterday = ActiveSheet.Range("F1").Value

With ActiveSheet.PivotTables("PivotTable2").PivotFields("OrderDate")
    For i = 1 To .PivotItems.Count
        If .PivotItems(i) = ("blank") Or .PivotItems(i) = yesterday Then
            .PivotItems(i).Visible = True
        Else
            .PivotItems(i).Visible = False
        End If
    Next i
End With
End Sub

宏停在:.PivotItems(i).Visible = False 在第一轮(i = 1)

对此有何建议?

1 个答案:

答案 0 :(得分:0)

我对延迟表示歉意,并没有帮助解决您的问题。如果您尝试显式定义数据透视表对象并使用其属性,该怎么办?这似乎对我有用:

Sub YesterdayBlank()

    Dim yesterday As String
    Dim pt As PivotTable
    Dim pf As PivotField
    Dim pi As PivotItem

    yesterday = ActiveSheet.Range("F1").Value

    Set pt = ActiveSheet.PivotTables("PivotTable2")
    pt.ClearAllFilters

    Set pf = pt.PivotFields("OrderDate")

    For Each pi In pf.PivotItems
        If pi.Value = "(blank)" Or pi.Value = yesterday Then
            pi.Visible = True
        Else
            pi.Visible = False
        End If
    Next

    Set pf = Nothing
    Set pt = Nothing

End Sub

PivotField对象还有一个PivotFilters.Add2方法。您可以添加各种FilterType,但我不明白这会对您有所帮助,因为您希望在结果中包含空格。但我想我会分享这个,因为它可能对你在其他方面有用:

pf.PivotFilters.Add2 XlPivotFilterType.xlSpecificDate, Value1:=yesterday

以下是有关此方法的一些其他信息VBA Filter error