有朋友问能不能做成复合饼图?

效果如下:

excel怎么做动态复合饼图?

这种复合饼图,更能直观的看出数据之间的比例、从属关系。

步骤详解第一步:插入单选控件

单选控件决定了查询方式,只有知道了查询方式,组合框内才出现不同的选项,图表数据才知道该如果显示,所以,必须先插入单选控件。

单选控件插入过程如下:

excel怎么做动态复合饼图?

一定要记住:单选控件单元格链接到A7,这一点非常重要,后面的所有公式编辑都和这个单元格有关。

excel怎么做动态复合饼图?

第二步:为组合框建立数据源

在F2输入公式:

=IF(A7=1,OFFSET(A1,1,,3,1),TRANSPOSE(OFFSET(A1,,1,1,3))),并以Ctrl+Shift+Enter组合键结束,并向下填充。

如下图

excel怎么做动态复合饼图?

该公式的含义是:

如果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转置。

此步的结果为:

excel怎么做动态复合饼图?

第三步:插入并设置组合框

【开发工具】——【插入】——【组合框】,并设置数据源区域为$F$2:$F$4,单元格链接到B7,如下动图:

excel怎么做动态复合饼图?

excel怎么做动态复合饼图?

第四步:建立第一饼的数据源

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组合键结束:

excel怎么做动态复合饼图?

此公式,通过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,则算各部门的总和,否则计算各月份的总和。

excel怎么做动态复合饼图?

3、此步完成的效果图:

excel怎么做动态复合饼图?

第五步:创建第一饼

1、选中G2:H4,插入复合饼图:

excel怎么做动态复合饼图?

2、右键,添加数据标签,并设置数据标签为系列名+值:

excel怎么做动态复合饼图?

3、但,与第二饼相连的第一饼中的最后一块,总是显示“其他”,对此进行修改:在A9单元格输入公式“=G4&CHAR(10)&H4”,并在开始菜单中设置“自动换行”,A9单元格就永远显示第一饼最后一块的名称与数值,如下图:

excel怎么做动态复合饼图?

4、选中第一饼最后一块的标签,在地址栏输入“=sheet1!A9”,则不再显示“其他”,而是显示具体名称:

excel怎么做动态复合饼图?

此步的最后结果:

excel怎么做动态复合饼图?

第六步:设置第二饼图数据源

1、第二饼图的数据源名称:

选中J2:J4,输入公式:

=IF(A7=2,OFFSET(A1,1,,3,1),TRANSPOSE(OFFSET(A1,,1,1,3))),并以Ctrl+Shift+Enter组合键结束:

选中K2:K4,输入公式:

=IF(A7=1,TRANSPOSE(OFFSET(A1,B7,1,1,3)),OFFSET(A1,1,B7,3,1)),并以Ctrl+Shift+Enter组合键结束:

excel怎么做动态复合饼图?

如果A7=2,按月份查询,则第二饼图显示显示对应月的各个销售部的数据;

如果A7=1,按部门查询,则第二饼图显示显示对应部门的各个月的数据;

2、选中J2:K4区域,建立独立饼图上右键,添加数据标签,并设置数据标签为系列名+值,同时设置绘图区域为无色填充:

excel怎么做动态复合饼图?

3、调整原有复合饼图的大小:

excel怎么做动态复合饼图?

4、将新建的独立饼图覆盖原有的“第二饼图”,并组合成一体:

excel怎么做动态复合饼图?

到此,我们明白:所谓的“复合饼图”其实是一假象,是有一个复合饼图和一个独立饼图复合而成的。

第七步:美化,完工

将图表美化,即得到本文开头的双控件动态复合饼图。