[英]excel 2010 vba pivot table report filter update
我在同一工作表“ Analytics Admin”上有16个数据透视表,我记录并清理了下面的宏(更新数据透视表源信息之前的代码)。 它基本上是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
类似于(未经测试,请在此处输入)
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
如果您具有Excel 2010或更高版本,并且大多数(希望是所有)这些数据透视表共享完全相同的数据源,则可以很少或不进行循环来完成此操作。 只需在“计数”字段上设置切片器,然后将其连接到所有数据透视表(在切片器上单击鼠标右键,然后选择“报告连接”即可。然后,您只需要在其中一个数据透视表上运行代码,所有其他人将自动更新。
如果您不希望用户单击切片器,则可以将其隐藏在某处。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.