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
答案 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个过滤器,则需要两个辅助列)
步骤2:将Helpercolumn属性添加到数据透视表的行字段中。
步骤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
我希望这是有用的。