使用“For Each”将相同的filter应用于工作表中的所有数据透视表
我想这是一个简单的问题,但由于我是新的VBA,我只是无法弄清楚。 我有这个代码转到Pivot table1
,selectDATA
透视字段和筛选此字段的一些值。
Sub Multiple_Filtering() Dim pf As PivotField Set pf = ActiveSheet.PivotTables("Pivot table1").PivotFields("DATA") 'Enable filtering on multiple items pf.EnableMultiplePageItems = True 'Must turn off items you do not want showing pf.PivotItems("201511").Visible = False pf.PivotItems("201512").Visible = False pf.PivotItems("201501").Visible = True pf.PivotItems("201502").Visible = True End Sub
我想要做的是做一个循环,对工作簿中的所有工作表中的所有数据透视表执行相同的操作。
我发现这段代码使用“For each”句子来设置工作簿中所有数据透视表的数据源,但是我无法将其修改为我的代码。
Dim sht As Worksheet Dim pvt As PivotTable For Each sht In ThisWorkbook.Worksheets For Each pvt In sht.PivotTables pvt.ChangePivotCache _ ThisWorkbook.PivotCaches.Create( _ SourceType:=xlDatabase, _ SourceData:=SourceAddress) pvt.RefreshTable Next pvt Next sht
有任何想法吗?
Sub Multiple_Filtering() Dim pf As PivotField Dim sht As Worksheet Dim pvt As PivotTable For Each sht In ThisWorkbook.Worksheets For Each pvt In sht.PivotTables Set pf = pvt.PivotFields("DATA") 'Enable filtering on multiple items pf.EnableMultiplePageItems = True 'Must turn off items you do not want showing pf.PivotItems("201511").Visible = False pf.PivotItems("201512").Visible = False pf.PivotItems("201501").Visible = True pf.PivotItems("201502").Visible = True Next pvt Next sht End Sub
我相信这应该整合在那里显示的两段代码
Sub Multiple_Filtering() Dim sht As Worksheet Dim pvt As PivotTable Dim pf As PivotField For Each sht In ThisWorkbook.Worksheets For Each pvt In sht.PivotTables Set pf = sht.PivotTables(pvt).Pivotfields("DATA") 'Enable filtering on multiple items pf.EnableMultiplePageItems = True 'Must turn off items you do not want showing pf.PivotItems("201511").Visible = False pf.PivotItems("201512").Visible = False pf.PivotItems("201501").Visible = True pf.PivotItems("201502").Visible = True 'Admittedly not sure if this is necessary pvt.RefreshTable Next pvt Next sht End Sub