excel - 用于自动刷新数据透视表的宏
问题描述
我有一个巨大的 Excel 文件,里面有很多数据透视表(来自 olap-cubes)——每 20 页大约 5 个。每周我都需要更改数据过滤器并将它们向前移动 1 周。我写了一个宏,但只针对一个数据透视表。
Sub Weeks_upd()
'
' Weeks_upd Ìàêðîñ
'
' Ctrl+u
'
ActiveSheet.PivotTables("PivotTable4").PivotFields( _
"[Fact data].[Year - Week - day].[Week]").VisibleItemsList = Array("")
ActiveSheet.PivotTables("PivotTable4").PivotFields( _
"[Fact data].[Year - Week - day].[Week]").VisibleItemsList = Array( _
"[Fact data].[Year - Week - day].[Week]").&[202025]", _
"[Fact data].[Year - Week - day].[Week]").&[202026]", _
"[Fact data].[Year - Week - day].[Week]").&[202027]", _
"[Fact data].[Year - Week - day].[Week]").&[202028]")
ActiveSheet.PivotTables("PivotTable4").PivotFields( _
"[Fact data].[Year - Week - day].[Week]").VisibleItemsList = Array("")
End Sub
如何为文件中的所有数据透视表扩展此宏?还是有另一种方法来更新数据透视表而不实际单击每个表?
解决方案
似乎您可以创建一个接收参数并应用所有数据透视表的过程。
Sub test()
Dim Pv As PivotTable
Dim Ws As Worksheet
Set Ws = ActiveSheet
For Each Pv In Ws.PivotTables
setPivot Pv
Next Pv
End Sub
Sub setPivot(Pv As PivotTable)
Pv.PivotFields( _
"[Fact data].[Year - Week - day].[Week]").VisibleItemsList = Array("")
ActiveSheet.PivotTables("PivotTable4").PivotFields( _
"[Fact data].[Year - Week - day].[Week]").VisibleItemsList = Array( _
"[Fact data].[Year - Week - day].[Week]").&[202025]", _
"[Fact data].[Year - Week - day].[Week]").&[202026]", _
"[Fact data].[Year - Week - day].[Week]").&[202027]", _
"[Fact data].[Year - Week - day].[Week]").&[202028]")
Pv.PivotFields( _
"[Fact data].[Year - Week - day].[Week]").VisibleItemsList = Array("")
End Sub
推荐阅读
- r - 在 Shiny R 中创建模块时出现问题:尝试将 tags$div 与命名空间连接
- javascript - 遍历 getNamespace 响应
- java - 编程排序数字乱序
- python - 无线传输日志文件
- reactjs - 如何在反应中加载 face-api.js 和 coco-ssd 模型而不会收到 Unhandled Rejection (TypeError): t is not a function
- vue.js - 使用 Vue.js 和 Django Rest Framework 登录 JWT 时出现 Vuex 错误
- java - 是否需要 bootstrap.yml?
- python - dorps坐标的多维xarray?
- javascript - 在页面上找不到变量时,未定义不是对象错误
- time - 基于时间的唯一 ID,尽可能少的数字