电脑小百科

查看: 77

图表中的交互 数据钻取

[复制链接]

发表于 2019-6-18 23:18
简单的数据可以用一个图表表达出来,但复杂些的数据用一个图表来表达就显得捉襟见肘了。若将图表做成动态可钻取数据的效果,点击交互控件时,总图表发生相应变化,点击总图表中的系列时就会得到和这个系列相关的其他数据,再利用其他数据生成相应的子图表,问题就能得到解决。这样的效果利用控件、少量VBA代码外加一些公式即可实现(图1)。
1560736598722.png
1. 设置交互控件
在工作表的F1:F3分别输入月份、地区、产品,H1:H2分别输入地区、产品,I1:I2分别输入月份、产品,J1:J2分别输入月份、地区。
①构建下拉列表1
点击“开发工具→插入→表单控件→组合框”,在合适位置画出一个组合框控件,将组合框的数据源区域设置为F1:F3,单元格链接为G1。
②构建下拉列表2
点击“公式→名称管理器→新建”,名称为“z_cd”,引用位置处为“=CHOOSE(Sheet1!$G$1,Sheet1!$H$1:$H$2,Sheet1!$I$1:$I$2,Sheet1!$J$1:$J$2)”;再画出一个组合框控件,数据源区域为“z_cd”,单元格链接为G2。
在G4单元格输入“=INDIRECT(CHOOSE($G$1,"H","I","J") & $G$2)”(图2)。
1560736622191.png
2. 编写数据钻取VBA代码
点击“开发工具→Visual Basic”进入VBA编辑器,点击“插入→类模块”,选中插入的“类1”,选择“视图→属性窗口”,将类的名称改为“CEventChart”,双击这个类进入编辑窗口,输入如图3所示代码(图3)。
1560736632524.png
接下来,点击“插入→模块”,双击“模块1”,在代码编辑窗口输入如图4所示代码(图4)。
1560736641724.png
接下来,双击“ThisWorkBook”,在右侧编辑窗口输入如图5所示代码(图5)。
1560736649842.png
这样,当点击图表中的系列时,系列名称就会出现在G3单元中。
小提示:
上述代码也可以通过网盘下载(链接:https://pan.baidu.com/s/1vZhfg86pAHg5tc4UB9E4lw 密码:2zba),直接复制粘贴使用。
3. 构建图表数据源
图表的数据源是根据上述控件的当前索引值获得的。
①构建主图表数据源
分别新建名为lb_11、lb_22、lb_33的3个名称,lb_11的引用位置为“=INDEX(Sheet1!$A$1:$A$41,N(IF({1},SMALL(99*(MATCH(Sheet1!$A$2:$A$41,Sheet1!$A$1:$A$41,)

返回顶部 返回列表