2014-10-07 160 views
1

Excel VBA中是否有方法允许在数据透视表中使用多个值过滤器?我试图过滤> 0和底部十个项目的值。在下面的示例代码中(通过录制宏生成),第二个过滤步骤覆盖第一个。如果支持多个值过滤器,似乎我只需要在这两个表达式之间添加布尔逻辑AND即可获得两个过滤器的结果。请建议对代码进行任何更改,或者让我知道是否不支持。谢谢!Excel VBA - 具有多值过滤器的数据透视表

Sub Multiple_Value_Filters() 

    ActiveSheet.PivotTables("PivotTable1").PivotFields("Full Name").PivotFilters.Add _  
     Type:=xlValueIsGreaterThan, _ 
     DataField:=ActiveSheet.PivotTables("PivotTable1").PivotFields("Days"), _ 
     Value1:=0 
    ActiveSheet.PivotTables("PivotTable1").PivotFields("Full Name").ClearAllFilters 
    ActiveSheet.PivotTables("PivotTable1").PivotFields("Full Name").PivotFilters.Add _ 
     Type:=xlBottomCount, _ 
     DataField:=ActiveSheet.PivotTables("PivotTable1").PivotFields("Days"), _ 
     Value1:=10 
End Sub 

回答

1

我真的不知道你的数据透视表应该在没有看到一些示例数据的情况下做什么,但我相信你应该能够做你正在尝试的。 尝试用这种乱搞:

Sub Multiple_Value_Filters() 
    Dim pvt As PivotTable 
    Set pvt = ActiveSheet.PivotTables("PivotTable1") 

    With pvt.PivotFields("Full Name") 
     .ClearAllFilters 
     .PivotFilters.Add Type:=xlValueIsGreaterThan, DataField:=pvt.PivotFields("Days"), Value1:=0 
     .PivotFilters.Add Type:=xlBottomCount, DataField:=pvt.PivotFields("Days"), Value1:=10 
    End With 
End Sub 

发现数据透视表选项,允许多个过滤器,但它也不太工作对我来说,即使它会工作,我手工做的。无论出于什么原因,Excel似乎都不喜欢代码。此功能仅适用于Excel 2007数据透视表和更新版本,但我正在Excel 2010中运行,因此我不确定此问题是什么。

Sub Multiple_Value_Filters() 
    Dim pvt As PivotTable 
    Set pvt = ActiveSheet.PivotTables("PivotTable1") 

    With pvt.PivotFields("Full Name") 
     .ClearAllFilters 
     .AllowMultipleFilters = True ' This is the main key to getting this to work but mine still errors out whenever I add the 2nd filter. 
     .PivotFilters.Add Type:=xlValueIsGreaterThan, DataField:=pvt.PivotFields("Days"), Value1:=0 
     .PivotFilters.Add Type:=xlBottomCount, DataField:=pvt.PivotFields("Days"), Value1:=10 
    End With 
End Sub 
+0

感谢您的回应!这段代码看起来非常接近。但是当我运行它,我得到运行时错误1004应用程序定义或对象定义的错误。当我点击调试时,第二个.PivotFilters语句突出显示。并从结果被过滤的方式,我可以告诉只有第一个.PivotFilters语句运行。感谢您的任何建议! – 2014-10-08 12:41:07

+0

你能提供一个数据源表的例子吗?列名称/数据类型。样本数据? – Archias 2014-10-08 14:47:04

+0

感谢您的帮助!这是一个链接,用于下载数据源表并查看代码如何与数据透视表一起工作。 https://www.dropbox.com/s/bvfypep0xlfcdzw/Pivot%20Table%20Test.xlsm?dl=0 – 2014-10-08 18:24:45

相关问题