Excel VBA - 具有多个值过滤器的数据透视表

时间:2014-10-07 18:42:58

标签: excel vba filter pivot

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

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

我知道这个问题已经很老了,但是最近我偶然发现了这个问题,对我来说真的没有任何作用。我只能对透视表使用一个过滤器。对于第二个或第三个,我总是遇到运行时错误。但是,我找到了一个简单的解决方法,下面将对其进行描述。我希望其他遇到类似问题的人也能对您有所帮助。

第1步::将Helper Columns添加到数据源中,并带有新的标题以及每行中的任何常量值。 (每个额外的过滤器需要一个辅助列。如果要使用3个过滤器,则需要两个辅助列) enter image description here

步骤2:将Helpercolumn属性添加到数据透视表的行字段中。 enter image description here

步骤3:选择所有行属性都在一行中的表格布局。 enter image description here

步骤4:现在,您可以应用不同的过滤器,在行字段中为每个属性应用一个。这将产生与将多个过滤器用于“标题1”相同的结果。如果您不喜欢多余的列,也可以将它们隐藏起来。

第5步::如果现在将其应用于VBA,则代码可能如下所示:

@Override
    protected void onCreate(Bundle _savedInstanceState) {
        super.onCreate(_savedInstanceState);
        setContentView(R.layout.rru);
        initialize();
        initializeLogic();

        MobileAds.initialize(this,
                "ca-app-pub-4263001851763080~5221870859");

        mInterstitialAd = new InterstitialAd(this);
        mInterstitialAd.setAdUnitId("ca-app-pub-3940256099942544/1033173712");
        mInterstitialAd.loadAd(new AdRequest.Builder().build());

    }
}---->this

我希望这是有用的。