2015-10-19 137 views
0

我想过滤具有日期值的页面过滤器。但是当我使用.PivotFilters.Add type:=xlBefore, value:="5/1/2015"时,我不断收到错误信息。 我也尝试下面的代码:数据透视表,页面过滤器 - 用日期过滤

Dim nd As Long 
nd = CLng(Date - 90) 

pvt.PivotFields("startdate").ClearAllFilters 
pvt.PivotCache.Refresh 
pvt.PivotFields("startdate").PivotFilters.Add Type:=xlBefore, Value:=nd 

但现在我越来越命名参数未找到

数据透视表已成功创建但未经过滤。

+0

你在哪里数据透视表中的'startdate'字段?报告过滤器?列标签?行标签? –

+1

@ScottHoltzman它的投票过滤器 –

+0

这就是问题所在。报告过滤器字段的行为不同。您可能需要循环查看该字段中的日期,并在日期之前选择它们。确保将启用多个项目设置为true。 –

回答

0

当在Report Filter过滤中使用数据透视字段时,它与或Column Label不同。请参阅下面的代码,在位于Report Filterstartdate上设置筛选条件。

Dim nd As Date 
nd = CLng(Date - 90) 

Dim pvt As PivotTable 
Set pvt = Sheet1.PivotTables(1) 

With pvt 

    .PivotCache.Refresh 

    Dim pf As PivotField 
    Set pf = .PivotFields("startdate") 

    With pf 

     .ClearAllFilters 

     Dim pi As PivotItem 
     For Each pi In pf.PivotItems 
      If pi < nd Then pi.Visible = True Else: pi.Visible = False 
     Next 

    End With 

End With 
+0

它的工作!非常感谢!!!! –