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


发表评论