我需要过滤数据的数量,以显示包含一个特定日期或将日期字段留空。
下面的宏适用于数字和文本(自然的小修正),但我不能使它与日期条目一起使用。没有编码日期值以避免任何与语言相关的问题。
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)
对此有何建议?
答案 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