制作动态分析图表的三种方法水晶易表比较适合于做动态图表,CX中可支持图表的切片、钻取等操作,如点击饼图的某个扇区、柱形图的某个柱子,可以让另外一个图表跟随变化。Excel中一般可以做到切片操作,钻取操作则难以做到,好像没有这种事件可以捕捉。好在是一般商业分析中,我们只需要做变化条件的切片操作就可以了。这篇日志就整理一下有关Excel动态图表的内容。一、动态图表的做法Excel中常见的做法有3种。1、辅助序列法。设置一个辅助数据区域,根据用户的操作选择,将目标数据从源数据区域引用到辅助数据区域,用辅助数据作图。当用户选择改变,辅助区域的数据随之变化,图表也就变化。引用数据一般要用到几个函数,offset、index(+match)、Vlookup、choose等。2、定义名称法。与前述方法相比,省去辅助数据区域,直接用名称提供图表数据源。根据用户选择,将目标数据定义到名称中,用名称做图表的数据源。当用户选择改变,名称所指向的区域随之变化,图表也变化。方法同前,一般使用offset函数。3、图片引用法。这种方法不多见,一般在人事管理应用中有用到,我把它用到图表的动态切换。前两种方法都是通过切换同一个图表的数据源来实现图表的动态变化,这种方法则是通过引用不同的图表来实现动态图表,可以支持不同数据源、不同类型、不同图表格式的图表的动态切换。关于这个方法说详细一点:1)先做好不同数据源、不同类型或者格式的图表,并将每个图表置于单独的单元格内2)定义名称,根据用户选择,引用相应的单元格,如mychart=OFFSET(Sheet1!$E$5,,Sheet1!$B$3,,)3)插入一个图片或者控件按钮,作为引用图表的容器。选中该图片,在公式栏输入:=mychart4)当用户选择变化,名称指向的单元格变化,则引用到容器的图表也就变化点这里查看上图的案例文件。除以上3种做法外,还有一直类似于CX中的一种做法,即对事先做好的图表,设置Visible属性的条件值,当条件值与用户的选择匹配时,对应的图表就show出来,否则就不可见。在excel内可以通过vba控制不同图表的Visible属性,也可以制作类似的动态图表,不过我不是太熟啦。分析人士还是使用无宏的好,无宏的更精巧,用宏的其实很笨的。并且多数人对宏有恐惧感,我就是。二、选择器的制作选择器是动态图表的主要组件,一般有3种做法。1、使用窗体控件使用窗体的列表框、组合框等,可以很方便的提供选择器,只需为控件指定数据源区和链接单元格即可,用户的选择的序号会反映到链接单元格。2、使用控件工具箱与窗体控件类似,用户选择的值会反馈到链接单元格。个人感觉不及窗体控件好用和美观,所以用得比较少。3、使用数据有效性使用单元格的数据有效性,也可以提供一个简单的选择器。缺点是当没有选中这个单元格时,看不到选择箭头,所以需要做好提示说明。三、图表的动态标题或标签动态图表应具有动态的标题。当我们绘制多序列图表时,图表的标题往往不会自动出现,这时可通过图表选项调出图表标题,然后将其链接到某个单元格。方法:选中标题对象,在公式栏输入:=,然后点击某单元格,则该单元格的值会链接到标题上。我们可以事先在这个单元格放置一些与用户操作联动的动态内容。另外也可以在图表中加入文本框,并链接到某个单元格,以增加更多动态内容。方法:选中图表状态下,在图表内绘制文本框,则文本框被含在图表中。选中文本框对象,在公式栏输入:=,然后点击某单元格,则文本框的显示值会链接到这个单元格。四、动态图表的演示Excel中制作的动态图表,无法放在PPT中演示。EH的chenjun版主曾做了一个可以在PPT演示状态下动态操作内嵌的excel图表的方法,令人匪夷所思。但技巧太高,分析人士不是IT人士,一般难以掌握,不具有实用性。CX最令人激动的是,它制作的动态图表可以导出为Flash格式,插入PPT中进行动态演示。但当数据更新时,需要重新导出Flash,并再次插入PPT,对于每月更新的分析不是很方便,所以仅适用于一次性的演示任务。对于一般日常工作,我的建议是,将包含动态图表的excel文件选择性链接入PPT(或者嵌入),在演示状态下点击该链接(或图标),即可进入excel进行图表的动态演示,关掉excel后则返回PPT继续演示,效果也比较好。