PPT报告可视化,也来玩动态图表|附教程
我们用Excel做图表时,都会习惯做成动态图表,这样既避免了图表堆砌,也提升了交互体验感!
在Excel中,动态图表的常见做法有两种:① 切片器+透视图 ② 控件+普通图表,方法①简单快捷,方法②个性灵活。我们推荐在制作分析模板时,优先使用方法②,以便实现更灵活、业务化的展示需求,例如下图的Excel控件动态图表:
20个店铺,你并不需要做20张图表,一个组合框控件+一张图就解决了问题!这是非常实用酷炫的处理方法!
那么如此实用、酷炫的动态图表,如果能实现在PPT中去演示,在开会的时候show一下,那可就完美了~
这当然也可以实现!下图就是演示效果:
当你在会议中汇报工作时,演示出以上的效果,20个店铺只在一页PPT中即可完美呈现!想想老板和同事惊呆了的眼神,肯定会让你收获满满的成就感!
如果是用切片器做的动态透视图,是没办法在PPT中演示的;用控件做动态图表,就可以实现在PPT中去演示!
以下讲解实现的步骤:
1、先在 Excel 里做好动态图表
这个是常规做法,这里就不展开讲解。用户的选择结果记录在 dashboard 工作表的 A1 单元格,这是动态图表的驱动引擎。
2、将包含动态图表的 Excel 文件嵌入到 PPT
复制 Excel 文件里放置图表的单元格区域(注意是图表后面的单元格区域,不是图表本身),在 PPT 里新开一页,选择性粘贴 - 工作表对象,这样,就把那个 Excel 文件“嵌入”到这个 PPT 里了。
3、在 PPT 里插入组合框
在 PPT 里,开发工具 - 控件,插入一个组合框。如果你的 PPT 没有 开发工具,请先在 文件 - 选项 - 自定义功能区 里调出来。
但这个下拉框,PPT 并没有提供地方让你指定下拉选择项和保存选择结果的位置,怎么办?这里是难点了,接下来我们需要使用VBA代码从 Excel 里读出选择项列表,赋给下拉框。
4、在PPT中写入代码
这个需要使用VBA代码来实现后续的事情了。在 PPT 里按下 Alt+F11 键来到 VBE 窗口,这个和 Excel 里是一样的。左侧选中 slide1 或 slide2 这样的对象(前面有个 PPT 的小图标),在右侧代码区输入如下的代码:(代码在文末提供,大家可以直接复制即可)
绿色箭头所指的位置,需要根据步骤1中Excel的动态图表控件配置内容,进行数据源、链接单元格的配置。
这段代码所做的事情,就是在每次 PPT 放映、下拉框被选中的时候,就去打开那个嵌入在 PPT 里的 Excel 文件,读取其中工作表的 B2:B21范围,把这些选择项赋给下拉框。当你进行下拉选择时,代码会执行把你选择的结果写入工作表的Q2单元格,以驱动图表变化。
5、放映 PPT 测试动态图表
现在,激动人心的时刻就要来到了!放映PPT,鼠标点击下拉框,可能会看到赋值的一下闪动,这时下拉框可能只有1行,再点一下下拉框,就可以完全展开了(这应该是个小bug)。选择某个选择项,右侧的图表就可以实现动态切换了!没错,就是如下图的效果:
6、保存 PPT 文件
保存文件时会提示含有宏,选择保存为后缀名为 .pptm 带宏格式的文件。下次打开时会有宏提示,选择启用宏即可。
7、以后的数据更新
Excel 嵌入 PPT 里后,那个单独的 Excel 文件就不需要了,所以你应该确认在 Excel 模型做完善了之后再嵌入。以后需要更新数据时,应该更新 PPT 里的嵌入对象。不要直接双击打开,这样窗口太小,不方便操作。要在嵌入对象上 右键 - 工作表对象 - 打开,这样会打开一个大的 Excel 窗口供你编辑,这样会更方便。
总结
有些同学可能觉得太复杂,有7个步骤,但其实只要你在Excel里做好动态图表后,后面的动作熟练操作后1分钟不到即可完成,因为代码我已帮大家写好了,直接复制粘贴修改即可使用~
PPT中可以完美支持演示所有的Excel图表,甚至在PPT中直接也可以做动态图表,当然还是要借助VBA代码来实现,不过也并不难,如果大家有兴趣学习更多的进阶Excel动态图表、PPT动态图表知识,欢迎加入《数说》会员,你可以学习到以下的全部内容!
最后附上PPT动态图表的代码,可直接复制,祝大家玩得愉快~本代码源自刘万祥老师,我已进行调整优化,另有进阶版本的代码,仅需要2行即可实现了!
apes(1).OLEFormat. _
Object.ActiveSheet
ListRng = _
_
Sh.Range("B2:B21") '←←双引号内,填写【控件的数据源区域】
With ComboBox1
For i = 1 To UBound(ListRng)
.AddItem ListRng(i, 1)
Next i: End With
Me.ComboBox1.Text = "请选择"
ComboBox1.ListRows = _
UBound(ListRng): End Sub
Private Sub ComboBox1_Click()
'''''''''''''''''''下方双引号内,填写控件【链接的单元格】'''''''''''
''''''''''''''''↓↓↓↓↓↓''''''''''''''''''''
Sh.Range("Q2") _
_
= ComboBox1.ListIndex _
+ 1: End Sub
Private Sub ComboBox1_LostFocus()