问题来源
昨天韩老师讲了:Excel194 | 双控件图表制作——以柱形图为例,又有朋友问能不能做成复合饼图?
效果如下:
这种复合饼图,更能直观的看出数据之间的比例、从属关系。
步骤详解
第一步:插入单选控件
单选控件决定了查询方式,只有知道了查询方式,组合框内才出现不同的选项,图表数据才知道该如果显示,所以,必须先插入单选控件。
单选控件插入过程如下:
一定要记住:单选控件单元格链接到A7,这一点非常重要,后面的所有公式编辑都和这个单元格有关。
第二步:为组合框建立数据源
在F2输入公式:
=IF(A7=1,OFFSET(A1,1,,3,1),TRANSPOSE(OFFSET(A1,,1,1,3))),并以Ctrl+Shift+Enter组合键结束,并向下填充。
如下图
该公式的含义是:
如果A7=1,F2:F4区域引用A2:A4的值,否则引用B1:D1的值;
公式中OFFSET(A1,1,,3,1)的结果为A2:A4区域,OFFSET(A1,,1,1,3)的结果为B1:D1区域;
TRANSPOSE(OFFSET(A1,,1,1,3)),是指将B1:D1转置。
此步的结果为:
第三步:插入并设置组合框
【开发工具】——【插入】——【组合框】,并设置数据源区域为$F$2:$F$4,单元格链接到B7,如下动图:
第四步:建立第一饼的数据源
1、选中G2:G4,输入公式:
=IF($A$7=1,OFFSET($A$1,MOD($B$7+ROW()+1,3)+1,),OFFSET($A$1,,MOD($B$7+ROW()+1,3)+1)),并以Ctrl+Shift+Enter组合键结束:
此公式,通过A7、B7,建立了名称列值与源数据区之间的关系,而且保证了组合框内选的内容位于名称G2:G4列的最后一个单元格G4,这样能保证与第二饼(副饼)相连的数据永远位于第一饼(主饼)的最后一块。
2、在H1单元格输入公式:
=IF($A$7=1,SUMPRODUCT(($A$2:$A$4=G2)*($B$2:$D$4)),SUMPRODUCT(($B$1:$D$1=G2)*($B$2:$D$4))),向下填充,计算出与G2:G4对应的各项的总和数据。
如果A7=1,则算各部门的总和,否则计算各月份的总和。
3、此步完成的效果图:
第五步:创建第一饼
1、选中G2:H4,插入复合饼图:
2、右键,添加数据标签,并设置数据标签为系列名+值:
3、但,与第二饼相连的第一饼中的最后一块,总是显示“其他”,对此进行修改:在A9单元格输入公式“=G4&CHAR(10)&H4”,并在开始菜单中设置“自动换行”,A9单元格就永远显示第一饼最后一块的名称与数值,如下图:
4、选中第一饼最后一块的标签,在地址栏输入“=sheet1!A9”,则不再显示“其他”,而是显示具体名称:
此步的最后结果:
第六步:设置第二饼图数据源
1、第二饼图的数据源名称:
选中J2:J4,输入公式:
=IF(A7=2,OFFSET(A1,1,,3,1),TRANSPOSE(OFFSET(A1,,1,1,3))),并以Ctrl+Shift+Enter组合键结束:
如果A7=2,按月份查询,则第二饼图显示显示对应月的各个销售部的数据;
如果A7=1,按部门查询,则第二饼图显示显示对应部门的各个月的数据;
2、选中J2:K4区域,建立独立饼图上右键,添加数据标签,并设置数据标签为系列名+值,同时设置绘图区域为无色填充:
3、调整原有复合饼图的大小:
4、将新建的独立饼图覆盖原有的“第二饼图”,并组合成一体:
到此,我们明白:所谓的“复合饼图”其实是一假象,是有一个复合饼图和一个独立饼图复合而成的。
第七步:美化,完工
将图表美化,即得到本文开头的双控件动态复合饼图。