动态图表在当前职场中的认知度和使用度不高,主要原因在于目前国内介绍和推广动态图表的书籍不多(几乎没有)。除此以外还有一个原因,就是当人们看到基于选择器的交互效果时,会想当然地认为可能需要用到复杂的编程知识才能实现,因此也就懒得花心思学习了。
事实并非如此。动态图表是人人可以掌握的图表技能,只要具备基本的Excel操作技能,会制作普通的Excel图表,能够理解个别函数的用法就足够了。当然,万事万物皆有其规律。掌握动态图表的关键在于了解动态图表的构成要素及其之间的联动方式,也即动态图表的工作原理。
参考2.2节的定义,动态图表的制作需要如下四个构件的共同合作。
数据源:为动态图表提供数据引用的结构化表格,一般经由业务报表或其他数据表格加工而成,可能是一个普通格式的行列报表,也可能是一个数据透视表。数据源决定了数据的组织方式,也就决定了动态图表可以按照什么维度进行数据的交互展示。
函数:从数据源动态提取源数据 的引用函数,例如OFFSET、VLOOKUP、INDEX等函数。
控件:数据切换和展示的触发组件,如单选按钮、复选框、滚动条等,用以制作动态图表的选择器。
图表:即传统的Excel图表,是数据展现的载体。
为了区分“数据源”和“源数据”的概念,请看图4.1之说明。
在这四个构件中,图表和控件是我们可以直接看到的,是动态图表的外在表现形式。而另外两个组件则一般不可见,其中,数据源通常单独存放在其他表格区域或Sheet表里;而函数则不具备外在形态,它像一根看不见的线,一头系着数据源,一头系着图表(这一点在4.2节中会有详细说明)。
图 4.1
以图2.2所示的银行客户经理资产管理成绩单图表为例,制作动态图表需要的四个构件分别如下。
数据源:“PivTab-2”页,由"DataSource"页的原始业务数据表经过数据透视表加工生成。
函数:OFFSET和VLOOKUP函数。
控件:显示姓名列表的列表框控件。
图表:主图区的散点图、柱状图。
关于这四个构件的更多内容,在第5~8章中将会依次做详尽介绍。
动态图表的工作原理集中体现在函数和控件两个组件上。控件相当于“信号发射器”,函数则相当于“GPS定位”。
这里用一个最简单的案例来说明动态图表的工作原理,案例详见本书范例文档“ExcelBro_Samples.01:第4章Excel动态图表及制作原理.xlsx”。
如图4.2所示,图中表格数据为深圳某手机公司2012年6~12月各区域的销售量。现用此数据源来制作一张柱状图,并通过下拉框选择显示各个区域的销售数据,效果如图4.3所示。
图 4.2
图 4.3
通过下拉式的单选类控件,用户可以选择区域名称,柱状图根据单选类控件所选状态下的区域名称显示对应的销售数据。例如,当选择控件中的“梅林”时,柱状图会从数据源中引用B6:H6单元格区域的数据并进行展现。可见,动态效果的关键在于如何根据控件选项从数据源中准确定位和提取源数据。要实现这一目标,就需要函数来帮忙了。
动态图表中,控件相当于“信号发射器”,在控件中做出一次单击或选择,控件就会输出一个“信号”(数字或逻辑值形式)。函数则相当于“GPS定位”,它能够根据控件发出的“信号”从数据源表中快速扫描并定位要引用的数据区域,然后引用该区域数据作为源数据在图表中展示出来。
本例中,单选类控件在制作时被链接至一个单元格(本例为A9),该单元格可以作为“信号接收器”存放控件发出的“信号”。在控件中进行单击或选择其他选项时,控件就会发出不同的“信号”。如图4.4所示,当在控件中选择“福田”时,A9自动输出数字2;选择“罗湖”时,A9单元格自动输出数字1;依此类推,当选择“宝龙”时,A9自动输出6。即A9返回“信号”为控件选项在数据源区域列表中的次序值。
图 4.4
控件产生的“信号”被函数接收,本质是被函数 的参数接收。由于“信号”是一个动态变化值,可以看作变量,因此,接收“信号”的参数也可以看作一个变量。函数通过该参数变量即可准确控制源数据的定位和引用。
本例中使用的函数是“=OFFSET($A$2,$A$9,1,1,7)”,此函数的含义为:以A2单元格为参照系,向下垂直偏移“A9”行(“A9”即A9单元格内存放的“信号”值),再向右平行偏移1列,以偏移后的新位置为起点返回一个1行7列的单元格区域。
例如,当在控件中选择“福田”时,A9单元格输出数字2,函数“=OFFSET($A$2,$A$9,1,1,7)”的含义即为:从A1向下偏移2行(至A3),再向右偏移1列(至B3),然后以B3为起点返回一个1行7列的数据区域(B3:H3)。B3:H3单元格区域即为控件当前选项下Excel图表所要展示的源数据,柱状图根据此函数返回结果(源数据)生成图表。
这就是Excel动态图表的工作原理。同理,读者可体会当控件选择其他区域时源数据的变化。