咔片PPT · AI自动生成演示文稿,模板丰富、排版精美 讯飞智文 · 一键生成PPT和Word,高效应对学习与办公

在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