饼图是常见的结构分析图表,但在实际数据分析中,常常会遇到大量零值项目,此时如果绘制饼图,就会使得饼图看起来非常乱。
例如,下图是一个要查看指定月份的费用结构分析表,绘制的是饼图。
由于某些项目在某个月不见得发生,因此数据是0,这样绘制的图表就显得非常凌乱,像个大蜘蛛似的。那么,能不能只画有数的项目,凡是零值都踢出去呢?

这个问题的解决思路是:
首先将那些数值是0的剔除出去,剩下那些不为0的项目,这个工作可以使用INDIRECT函数做滚动查找来解决。
其次,对处理后的数据区域,使用OFFSET函数来引用,并制作饼图。
下面是主要步骤介绍。
步骤1:在单元格G1设置数据验证,以便选择要绘图分析的月份。
步骤2:设计辅助区域,查找指定月份的数据,并判断是否不为0:
单元格K2:
=AND(
INDEX(B2:D2,,MATCH($G$1,$B$1:$D$1,0))<>0,
INDEX(B2:D2,,MATCH($G$1,$B$1:$D$1,0))<>"")
步骤3:定位不为0的数据所在位置(行):
单元格L2:
=MATCH(TRUE,K:K,0)
单元格L3:
=MATCH(TRUE,INDIRECT("K"&L2+1&":K15"),0)+L2
步骤4:根据定位出的位置,从从原始数据区域内取出项目名称及其金额:
单元格N2:
=IFERROR(INDEX(A:A,L2),"")
单元格O2:
=IFERROR(INDEX($B$1:$D$15,L2,MATCH($G$1,$B$1:$D$1,0)),"")
辅助区域的效果如下图所示。

步骤5:定义如下两个动态名称:
项目:
=OFFSET($N$2,,,SUMPRODUCT(($N$2:$N$14<>"")*1),1)
金额:
=OFFSET($O$2,,,SUMPRODUCT(($O$2:$O$14<>"")*1),1)

步骤6:用这两个名称画饼图,美化图表。

-----------------------------
(未完待续,关注公众号,阅读更多有价值原创文章)
-------------------------
数据分析精选文章目录

