在tableau里可以很轻易的做出下面的图表,但是相比之下,excel的应用更加广泛,于是我尝试用excel将其做出。
我大概倒腾了一个下午,如果只是简简单单的做个一次性的那还算简单,当你看完我这篇文章也就会了,耗费我时间的是怎样让其在筛选的时候可以动态变换。
先说说怎么做出柱状饼图组合图。我随机准备了一些数据。
第一步:制作组合图
第二步:制作饼图(每个月份制作一个饼图)。
第三步:调整纵坐标轴(此操作为了让饼图不超出图表区域)。
第四步:逐个将饼图复制黏贴为图片,再剪切图片黏贴到辅助系列的每个数据点上。
第五步:再制作一个饼图,将图例截图成图片放到图表里即可。
逐个黏贴,图表就操作完成了。
如果是制作可筛选的报表,那就需要额外增加进行一些操作。
首先需要将饼图逐个命名。比如1月饼图命名为1月,2月饼图命名为2月……
记住名称必须是横坐标那一列文字,图表命名为组合图,因为后面代码要用到。
然后我们再在当前sheet里放置代码。
最后组合框指定宏添加饼图。
代码需要修改的地方我做了备注,其余代码无需改动即可使用。这里需要说明的是,图表横坐标的排序需要和单元格中一致(无特殊设置,通常情况是一致的)。如有疑问,欢迎留言。
Sub 添加饼图()
i = 1
Set rg = Range("a2:a6") '横坐标所在位置
Set ch = ActiveSheet.ChartObjects("组合图") '图表名称
num = 2 '第几个系列改为添加饼图
ms = Range("a9").Value '设置纵坐标最大值
Application.ScreenUpdating = False
ch.Activate
ActiveChart.Axes(xlValue).MaximumScale = ms
For Each r In rg
ActiveSheet.ChartObjects(r).Activate
ActiveChart.ChartArea.Select
ActiveChart.ChartArea.Copy
Range("a1").Select
ActiveSheet.Pictures.Paste.Select
Selection.Cut
ch.Activate
ActiveChart.FullSeriesCollection(num).Points(i).Select
Selection.Paste
Application.CutCopyMode = False
i = i + 1
Next
Application.ScreenUpdating = True
ch.Activate
End Sub