如何解决如何过滤多个名称不同但来源相同的切片器?
这 2 个数据选项卡都是动态命名的范围“组合”和“存储”。
它们用于 9 个不同的数据透视表(9 个不同的工作表);其中也有命名切片器。 (“COMBINED”连接到 8 个 Slicer。“STORE”连接到 1 个 Slicer。)
我想在运行宏后将切片器过滤到一个“时间”周期,并刷新数据透视表。
这是我的切片器名称和设置:
作为起点,我运行了一个录制的宏,并得到了这个(精简版):
Sub RecordedMacro()
With ActiveWorkbook.SlicerCaches("Slicer_TIME1")
.SlicerItems("Kroger YTD - Ending 2021 PD 04 WK 4 (16)").Selected = True
.SlicerItems("Latest 13 Wks - Ending 2021 PD 04 WK 4 (16)").Selected = _
False
.SlicerItems("Latest 26 Wks - Ending 2021 PD 04 WK 4 (16)").Selected = _
False
.SlicerItems("Latest 4 Wks - Ending 2021 PD 04 WK 4 (16)").Selected = False
.SlicerItems("Latest 52 Wks - Ending 2021 PD 04 WK 4 (16)").Selected = _
False
End With
With ActiveWorkbook.SlicerCaches("Slicer_TIME2")
.SlicerItems("Kroger YTD - Ending 2021 PD 04 WK 4 (16)").Selected = True
End With
With ActiveWorkbook.SlicerCaches("Slicer_TIME3")
.SlicerItems("Kroger YTD - Ending 2021 PD 04 WK 4 (16)").Selected = True
End With
With ActiveWorkbook.SlicerCaches("Slicer_TIME4")
.SlicerItems("Kroger YTD - Ending 2021 PD 04 WK 4 (16)").Selected = True
End With
With ActiveWorkbook.SlicerCaches("Slicer_TIME5")
.SlicerItems("Kroger YTD - Ending 2021 PD 04 WK 4 (16)").Selected = True
End With
With ActiveWorkbook.SlicerCaches("Slicer_TIME6")
.SlicerItems("Kroger YTD - Ending 2021 PD 04 WK 4 (16)").Selected = True
End With
With ActiveWorkbook.SlicerCaches("Slicer_TIME7")
.SlicerItems("Kroger YTD - Ending 2021 PD 04 WK 4 (16)").Selected = True
End With
With ActiveWorkbook.SlicerCaches("Slicer_TIME8")
.SlicerItems("Kroger YTD - Ending 2021 PD 04 WK 4 (16)").Selected = True
End With
With ActiveWorkbook.SlicerCaches("Slicer_TIME")
.SlicerItems("Kroger YTD - Ending 2021 PD 04 WK 4 (16)").Selected = True
End With
End Sub
由于切片器来自同一来源,所以有没有办法压缩它?也许是一个数组?
我看过有关 OLAP 表的帖子/问题,但这不是 OLAP 表。 另外,如何在一个数据透视表中选择多个选项。
How to select one slicer = true and remaining = false in VBA
VBA change Slicer item selection
Sub FilterSlicer()
Dim slr As Slicer
Dim sc As SlicerCache
Dim pt As Pivottable
Dim i As Long
Set sc = ActiveWorkbook.SlicerCaches("Slicer_TIME1")
'Set sc = slr.SlicerCache
For Each pt In sc.Pivottables
pt.ManualUpdate = True 'Stops Pivottable from refreshing after each PivotItem is changed
Next pt
With sc
'At least one item must remain visible in the Slicer at all times,so make the first
'item visible,and at the end of the routine,check if it actually *should* be visible
.SlicerItems(1).Selected = True
'Hide any other items that aren't already hidden.
'Note that it is far quicker to check the status than to change it.
' So only hide each item if it isn't already hidden
For i = 1 To .SlicerItems.Count
If .SlicerItems(i).Selected Then .SlicerItems(i).Selected = False
Next i
End With
For Each pt In sc.Pivottables
pt.ManualUpdate = False
Next pt
End Sub
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。