我在同一张表上有16个数据透视表," Analytics Admin",我记录并清理了下面的宏(在更新数据透视表源之前的代码)。它基本上是16次相同的代码,唯一改变的是数据透视表名称(MSP,MSP30,FSP,FSP30等)。是否可以一次更改所有数据透视表的报告过滤器?
Worksheets("Analytics Admin").Activate
'refreshes all data, clears all filters then filters 0 and blanks out of all custom range pareto pivot tables
ActiveSheet.PivotTables("MSP").PivotCache.Refresh
ActiveSheet.PivotTables("MSP").PivotFields("count").ClearAllFilters
ActiveSheet.PivotTables("MSP").PivotFields("count").ShowAllItems = True
With ActiveSheet.PivotTables("MSP").PivotFields("count")
.PivotItems("0").Visible = False
.PivotItems("(blank)").Visible = False
End With
ActiveSheet.PivotTables("MSP").PivotCache.Refresh
ActiveSheet.PivotTables("FSP").PivotCache.Refresh
ActiveSheet.PivotTables("FSP").PivotFields("count").ClearAllFilters
ActiveSheet.PivotTables("FSP").PivotFields("count").ShowAllItems = True
With ActiveSheet.PivotTables("FSP").PivotFields("count")
.PivotItems("0").Visible = False
.PivotItems("(blank)").Visible = False
End With
ActiveSheet.PivotTables("FSP").PivotCache.Refresh
答案 0 :(得分:0)
Something along the lines of (not tested, just typed into here)
dim ws as Worksheet
set ws = ThisWorkbook.Worksheets("Analytics Admin")
dim pt as PivotTable
For Each pt In ws.PivotTables
' Debug.Print Pivot.Name
pt.PivotFields("count").ClearAllFilters
pt.PivotFields("count").ShowAllItems = True
With pt.PivotFields("count")
.PivotItems("0").Visible = False
.PivotItems("(blank)").Visible = False
End With
pt.PivotCache.Refresh
pt.refreshTable
pt.Update
Next
答案 1 :(得分:0)
如果你有Excel 2010或更高版本,并且大多数(希望所有)这些Pivots共享完全相同的数据源,你可以在很少或没有循环的情况下完成此操作。只需在"计数"上设置切片器。字段然后将其连接到所有数据透视表(右键单击切片器,然后选择"报告连接"然后您只需要在其中一个数据透视表上运行代码,所有其他数据库将自动更新。
如果您不希望用户点击它,您可以在某处隐藏切片器。