繁体   English   中英

Excel 2010 VBA数据透视表报表筛选器更新

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM