如何用vba设置切片器不显示从数据源中删除的项目?

在Excel中可以为智能表格、透视表插入切片器。

利用切片器可以快速直观地筛选数据。

下图显示了为数据透视表添加的切片器:

当把数据源中的“店2”相关数据全部删除,更新数据透视表后,如下图所示:

更新数据透视表后,“店名”切片器仍然显示了已经从数据源中删除的“店2”项目。

为了在切片器中不显示已经从数据源中删除的项目,可以打开“切片器设置”,取消勾选“显示从数据源中删除的项目”即可,如下图所示:

但是,当在一个excel工作簿中添加了很多切片器,逐个手动设置非常费时,可以使用vba批量设置。

如果要实现上述效果,需要设置SlicerCache对象的ShowAllItems属性为False。

方法一、 遍历工作表的数据透视表的切片器的切片器缓存对象:

Sub QQ1722187970()
    Dim oPT As PivotTable
    Dim oPC As PivotCache
    Dim oWK As Worksheet
    Dim oSC As SlicerCache
    Dim oSlicer As Slicer
    Dim oWB As Workbook
    Set oWB = Excel.ThisWorkbook
    For Each oWK In oWB.Worksheets
        For Each oPT In oWK.PivotTables
            With oPT
                For Each oSlicer In .Slicers
                    With oSlicer
                        '不显示从数据源中删除的项目
                        .SlicerCache.ShowAllItems = False
                    End With
                Next
            End With
        Next
    Next
End Sub

方法二、遍历工作簿中所有切片器缓存对象:

Sub QQ1722187970()
    Dim oPT As PivotTable
    Dim oPC As PivotCache
    Dim oWK As Worksheet
    Dim oSC As SlicerCache
    Dim oSlicer As Slicer
    Dim oWB As Workbook
    Set oWB = Excel.ThisWorkbook
    For Each oSC In oWB.SlicerCaches
 '不显示从数据源中删除的项目
        oSC.ShowAllItems = False
    Next
End Sub

通过上述介绍的两种思路都可以快速地批量将所有切片器设置为不显示从数据源中删除的项目。

       

发表评论