微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何过滤多个名称不同但来源相同的切片器?

如何解决如何过滤多个名称不同但来源相同的切片器?

我有一个宏可以将数据值移动到 2 个数据选项卡中。

这 2 个数据选项卡都是动态命名的范围“组合”和“存储”。

它们用于 9 个不同的数据透视表(9 个不同的工作表);其中也有命名切片器。 (“COMBINED”连接到 8 个 Slicer。“STORE”连接到 1 个 Slicer。)

运行宏后,在切片器中选择了所有时间范围。

Before

我想在运行宏后将切片器过滤到一个“时间”周期,并刷新数据透视表。

After

这是我的切片器名称和设置:

Name Manager

Slicer Settings

作为起点,我运行了一个录制的宏,并得到了这个(精简版):

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 举报,一经查实,本站将立刻删除。