Excel VBA操作切片器切换显示不同的图表

2022-11-16 10:44:25 浏览数 (1)

标签:VBA,切片器

在《使用Excel切片器切换图表》中,我们看到可以根据切片器中的选择来显示图表,但只是给出了简略的介绍。这段时间抽空研究了一下,给出制作过程。

切片器是显示汇总数据最有吸引力的方式之一。Excel 2010中引入的切片器是一种将数据列表显示为页面上按钮的方法。

单击按钮可以在项目列表中分离出一个项目,如下图1所示。

图1

汇总表上方的切片器显示了汇总(全部)。在这个表旁边,我想显示一个图表,如果选择了全部,则显示数据的堆积柱形图,如果选择切片器框中的一个单独的区域,则显示单一的簇状柱形图,如下图2所示。

图2

其实,这里创建了两个图表,一个是堆积柱形图,另一个是二维簇状柱形图。使这些图表大小相同并重叠。注意这些图表的名称,因为这将在编码过程中变得非常重要。

再回过头来,看看数据源,如下图3所示。

图3

创建汇总数据表如下图4所示。

图4

创建数据透视表,如下图5所示。

图5

创建切片器,注意切片器的名称,如下图6所示。

图6

在数据透视表工作表代码模块中输入下面的事件代码:

代码语言:javascript复制
Private Sub Worksheet_PivotTableChangeSync(ByVal Target As PivotTable)
    Dim slItem As SlicerItem
    With ActiveWorkbook.SlicerCaches("切片器_数据")
        For Each slItem In .VisibleSlicerItems
            If slItem.Name = "全部" Then
                ActiveSheet.Shapes("Chart 1").ZOrder msoSendToBack
            Else
                ActiveSheet.Shapes("Chart 2").ZOrder msoSendToBack
            End If
        Next slItem
    End With
End Sub

结果如上图2所示。

有兴趣的朋友可以到知识星球App完美Excel社群下载示例工作簿,进一步研究。

0 人点赞