Gly*_*lyn 2 excel vba excel-vba
我有一个创建数据透视表的MS Excel宏。在数据透视表中,我要过滤多个项目。因此,首先需要将所有项目设置为false,然后将要包括的项目设置为true。所以目前我有:
With ActiveSheet.PivotTables("PivotTable2").PivotFields("Test Cycle")
.PivotItems("FXA BI_MH Pre UAT C1").Visible = False
.PivotItems("FXA BI_MH Pre UAT C2").Visible = False
.PivotItems("FXA Reg C1").Visible = False
.PivotItems("MC3").Visible = False
.PivotItems("PT Cycle 1").Visible = False
.PivotItems("Regression Test (APO)").Visible = False
.PivotItems("SIT CR").Visible = False
.PivotItems("SIT Cycle 2").Visible = False
.PivotItems("UAT - Data Conv").Visible = False
.PivotItems("UAT Pre-Test - Additional").Visible = False
.PivotItems("UAT Pre-Test - Final").Visible = False
.PivotItems("UAT Pre-Test - Iteration 2").Visible = False
End With
ActiveSheet.PivotTables("PivotTable2").PivotFields("Test Cycle"). _
EnableMultiplePageItems = True
Run Code Online (Sandbox Code Playgroud)
但是,“测试周期”项会更改,如果引入了新项,则会自动包含在内,因为我尚未将其设置为false。有没有一种方法可以将所有选择都设置为false,类似(不起作用):
With ActiveSheet.PivotTables("PivotTable2").PivotFields("Test Cycle")
.PivotItems("(All)").Visible = False
End With
ActiveSheet.PivotTables("PivotTable2").PivotFields("Test Cycle"). _
EnableMultiplePageItems = True
Run Code Online (Sandbox Code Playgroud)
在@Josh的帮助下,我有:
ActiveSheet.PivotTables("PivotTable2").PivotFields("Test Cycle"). _
EnableMultiplePageItems = True
With ActiveSheet.PivotTables("PivotTable2").PivotFields("Test Cycle")
For i = 1 To .PivotItems.Count - 1
If .PivotItems(i).Name <> "UAT Pre-test (FXA)" _
And .PivotItems(i).Name <> "UAT C2 (FXA)" Then
.PivotItems(.PivotItems(i).Name).Visible = False
End If
Next i
End With
Run Code Online (Sandbox Code Playgroud)
与其手动列出每个项目,不如尝试使用以下方法关闭过滤器:
With ActiveSheet.PivotTables("PivotTable2").PivotFields("Test Cycle")
For i = 1 To .PivotItems.Count - 1
.PivotItems(.PivotItems(i).Name).Visible = False
Next i
End With
Run Code Online (Sandbox Code Playgroud)
请记住,使用excel界面时,必须至少选择一项才能保存过滤器。
