我正在使用 Excel for Mac 2011。
我有几个不同的数据透视表,每个数据透视表都用于组织数据以在摘要表上绘制图表。每个数据透视表都应以相同的方式进行筛选。
问题:
(1) 有没有办法移动/复制/链接这些过滤器,以便当一个过滤器改变时,其他过滤器也会改变? (VBA 现在适用于单选,但适用于多选呢?)
(2)有没有办法在主摘要页面上创建单一、通用的过滤器?
编辑:基本上,我希望在 Mac 版 Excel 中模拟 SLICERS。有什么想法吗?
答案1
使用我在网上找到的一些示例,我编写了以下 VBA 来实现我的需求。我在摘要页面上放置了一个空的数据透视表,并放置了一个链接到此宏的按钮,该按钮使用相同的过滤器更新所有其他数据透视表。
免责声明:这对于已选择“(全部)”的字段不起作用。我不需要研究,但可以修改以下代码以包含“(全部)”支持。
Sub UpdateAllPivotTables()
Dim ws As Worksheet
Dim wsMain As Worksheet
Dim ptMain As PivotTable
Dim pt As PivotTable
Dim pfMain As PivotField
Dim piMain As PivotItem
Dim pi As PivotItem
Dim pf As PivotField
Dim hadError As Boolean
On Error Resume Next
Set wsMain = ActiveSheet
Set ptMain = ActiveSheet.PivotTables(1)
Application.EnableEvents = False
For Each ws In ThisWorkbook.Worksheets
If (Not (ws.Name = wsMain.Name)) Then
ws.Unprotect
For Each pt In ws.PivotTables
pt.ManualUpdate = True
For Each pf In pt.PageFields
For Each pi In pf.PivotItems
If (Not (pi.Visible = ptMain.PageFields(pf.Name).PivotItems(pi.Name).Visible)) Then
pi.Visible = ptMain.PageFields(pf.Name).PivotItems(pi.Name).Visible
End If
Next pi
Next pf
pt.ManualUpdate = False
Next pt
'ws.Protect
End If
Next ws
Application.EnableEvents = True
End Sub