excel怎么做动态复合饼图?

有朋友问能不能做成复合饼图?
效果如下:

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单元格就永远显示第一饼最后一块的名称与数值 , 如下图:

推荐阅读