Excel图表网络学习资源

知名Excel图表专家Jon Peltier的个人博客,有大量和图表相关的案例及制作教程

https://peltiertech.com/

MVP Andy的个人博客,有大量和图表相关的案例及工具

http://www.andypope.info/charts.htm

著名Excel作家John Walkenbach的公司网站,有大量图表相关资源

http://spreadsheetpage.com/

Jorge Camoes维护的Excel图表网站

http://www.excelcharts.com/blog/

MVP Daniel Ferry的个人博客,有大量和图表相关的案例

http://www.excelhero.com/

痴狂Excel爱好者Ajay的个人博客,有大量和图表相关的案例

http://www.databison.com/

著名数据可视化作者Stephen Few维护的网站,有大量图表及仪表板制作建议

http://www.perceptualedge.com/blog/

图表大师Edward Tufte的个人博客网站

http://www.edwardtufte.com/tufte/fineart

知名仪表板制作公司网站,有一些不错的仪表板教程

http://www.juiceanalytics.com/writing/

Excel协调共生:基于网页的交互式图表

SAP公司的水晶易表Xcelsius软件也是基于Flash格式的图表制作工具,其具有非常灵活的交互功能,和Excel无缝结合。同时其有很强大的仪表板整合功能,但在处理大数据及图表样式的自定义方面受其模版影响,并不出彩。Swiff Chart也包括一个基于网页的开发版本,该版本数据和图表分离,可以利用网页编程实现交互。这类基于编程的Flash图表,在互联网中有种类繁多的应用,这和Excel已经没有太多的关联,有兴趣的读者请使用搜索引擎去检索。

基于Microsoft skydrive云存储的Excel Web App在交互方面几乎没有实用价值,目前不支持任何交互控件,包括数据有效性的使用。但笔者发现,这个应用的函数功能异常强大,配合函数和数据表格的筛选可以实现图表简单交互。

知识扩展


笔者在本书的主页提供了图16.2-2案例文档的Web交互版本,详见以下网址:

http://www.visualvivid.com/web-based-excel-dynamic-chart.html


Microsoft Windows SharePoint的PerformancePoint仪表板部件可以在企业的SharePoint站点提供丰富的交互式图表,该应用的初衷即是针对BI仪表板而设计,相比Excel不但强大,而且专业。Microsoft提供了一个独立的仪表板设计器来配合该部件的使用,如图16.3-4所示:

基于PerformancePoint仪表板设计器

图16.3-4 基于PerformancePoint仪表板设计器

借助微软的PowerPivot Excel插件,通过获取外部数据库数据,使用数据透视表或图来展示和分析数据,并发布到SharePoint站点,来实现BI仪表板的Web应用。图16.3-5是一个基于SharePoint的仪表板案例。

基于SharePoint站点的BI仪表板

图16.3-5 基于SharePoint站点的BI仪表板

知识扩展


PowerPivot Excel插件的下载地址为:

http://www.microsoft.com/downloads/zh-cn/details.aspx?FamilyId=e081c894-e4ab-42df-8c87-4b99c1f3c49b&displaylang=zh-cn


示例文档


本书所附16.3的两个文件夹中包含了本节所涉及的案例。

1)16.3-1文件夹是基于微软skydrive云存储的Excel Web App应用,.xlsx文档为skydrive上存储的原始文档,.html为嵌入Excel Web App应用的网页文档。

2)16.3-2文件夹是基于Swiff Chart软件的应用,其中:.csv为Swiff Chart原始数据档;.sfc为Swiff Chart的原始文档;.swf为Flash图表导出;.html为Flash嵌入文档;.xls为嵌入Flash的Excel文档;.ppt为嵌入Flash的PowerPoint文档。

Excel协调共生:基于Web的应用

将Excel图表发布到网页中,借助Microsoft提供的Web应用工具,可实现将相对简单的Excel图表发布到网页中;如果借助第三方的Flash工具,则可在多个平台和浏览器中使用;对于交互类的图表及仪表板其实最好的解决方案则是使用Microsoft Windows SharePoint。

在网页上使用Excel图表

在Excel 2003及其过往版本中,Excel使用OWC(Office Web Components)将Excel发布到网页。其包含四个主要的部件:电子表格、图表、透视表和数据源。Excel 2003中使用非常简单,在图16.2-1的另存对话框中,选择“添加交互”,点击[发布]即可。但这个组件的功能非常有限,且发布的图表可能会走样。查看必须使用IE浏览器,同时需安装Microsoft Office2003或过往版本。

基于微软skydrive云存储的Excel Web App

图16.3-1 基于微软skydrive云存储的Excel Web App

该组件在Excel 2007/2010中已经不被支持,但我们可以选择基于微软skydrive云存储的Excel Web App,前提是必须拥有一个MSN账号,该账号可以非常方便地通过注册获得。使用MSN账号登录https://skydrive.live.com/,并上传Excel工作簿到权限为“所有人(公开)”的文件夹中,双击打开,单击菜单的“共享>嵌入”命令,如图16.3-1所示,在弹出对话框中复制嵌入代码,粘贴到个人博客或网页的相关位置即可,实际效果如图16.3-2所示:

利用Excel Web App嵌入Excel工作簿的网页

图16.3-2 利用Excel Web App嵌入Excel工作簿的网页

Microsoft也提供了基于Web应用的Excel Services,这个应用构建在ASP.NET和Microsoft Windows SharePoint技术之上,主要针对企业级应用。须借助服务器端的应用来实现,使用Excel Services对个人几乎没有可操作性。

使用第三方工具

也可以借助第三方工具来实现将图表发布到网页中,但这已经不是Excel图表的应用。这类工具中,尤以Swiff Chart软件为代表,这是一款短小精悍的商业小软件,除没有三维立体类图表外,操作和Excel图表几乎并无二致,尤其设置界面几乎和Excel 2003如出一辙,且可直接导入Excel数据表,同时具有Excel所不具有的线形阶梯样式,如图16.3-3所示:

基于Flash技术的Swiff Chart图表编辑软件

图16.3-3 基于Flash技术的Swiff Chart图表编辑软件

该软件可将制作好的图表导出为Flash的swf格式,该格式可以非常方便地嵌入到网页,以及Excel和PowerPoint软件中。如果嵌入到PowerPoint幻灯演示中的图表由该软件生成,切记不要使用Flash炫丽的动画效果,这会得不偿失。Swiff提供了Swiff Point插件工具,该工具可以非常方便地实现在PowerPoint软件中插入swf文件。

Excel协调共生:图片导出

虽然在其他Microsoft Office系列软件中,可以将Excel中复制的图表,使用选择性粘贴,转换为图片形式来使用。但在非Microsoft Office系列软件中,可能需要使用图片格式的图表,问题是Excel并不支持将图表直接导出为图片格式,这就需要我们使用一些变通的方法来实现图片导出。

以网页保存形式导出

Excel支持将文档保存为普通网页(htm、html)和单文件(mht、mhtml)格式,如图16.2-1所示,其中当保存为普通网页格式时,我们可在保存目录的同文档名文件夹中获得图表图片。在Excel 2003及其以前版本中,可获得的图片是gif格式;在Excel 2007/2010中,可获得的图片是png格式。

Excel 2003另存为网页对话框

图16.2-1 Excel 2003另存为网页对话框

借助其他软件导出

1.借助PowerPoint导出

PowerPoint软件支持将图片另存为多种图片格式,借助PowerPoint软件可实现将图表转换为本地图片。在Excel中选中图表复制,在PowerPoint软件中选择性粘贴为图片(增强性图元文件),然后单击鼠标右键>另存为图片。在另存对话框中,可选的类型有jpg、gif、bmp等种类繁多的格式,如果使用PowerPoint 2010,则保存格式更是多样。

2.借助Microsoft Office Picture Manager导出

Microsoft Office Picture Manager软件是在Office正常安装下,即被默认安装的图片管理软件,可完成图片的简单管理和编辑。该软件可直接提取剪切板的图片,将其保存为本地图片。在Excel中,按住键盘Ctrl键,选中图表复制,并选择性粘贴为图片(增强性图元文件),将这个粘贴图片剪切,然后在Microsoft Office Picture Manager中粘贴即可获得png格式图表。

3.借助其他软件导出

可借助pdf打印机或另存为pdf格式的文档,当然根据版本的不同,可能需要安装相应的软件,然后将pdf文件另存为图片格式来实现。Microsoft Office 2003中包含了一个Microsoft Office Document Imaging软件,可将Excel文档保存为tif或tiff的图片格式。除此之外,也可使用屏幕截图软件来获得图片,这类软件有很多,感兴趣的读者请搜索互联网。

借助VBA导出

其实不论Excel版本,均支持将图表或矢量图形导出为位图格式的图片形式,但遗憾的是Excel并未提供相应的菜单按钮,这就需要我们使用VBA来处理这样的需求。使用VBA来导出位图格式的图片相当简单,只需使用图表的Export方法即可。但该方法并不支持emf格式的矢量图片,所以在图16.2-2案例中,emf格式的图片借助PowerPoint来完成导出,如果没有安装PowerPoint软件,则该方法无效。

Excel 2003另存为网页对话框[资料来源:纽约时报网站]

图16.2-2 Excel 2003另存为网页对话框[资料来源:纽约时报网站]


以下是图片导出的VBA代码,和图16.2-2案例中的“图表输出”按钮关联,输出图表必须要在选中前提下。如果读者对此感兴趣,可以在此基础上进行修改和扩充。


程序代码:16.2-1 模块1的公有变量申明

Excel协调共生:嵌入式应用

除Excel外,在Microsoft Office系列软件中,均可插入Excel图表对象,这其实是采用了将Excel工作簿嵌入到其他软件中显示的OLE技术,可调用Excel直接编辑,这为我们将Excel图表跨软件显示和编辑带来了极大的方便。

插入Excel图表对象

无论Microsoft Office系列软件的版本及软件,在“插入>对象”中,我们可以在“新建”选项卡中选择“Microsoft Excel图表”对象,确定后即可调用Excel来创建一个Excel图表(Excel除外)。亦可在“由文件创建”选项卡中选择一个已经包含Excel图表的工作簿,嵌入到相应的程序文档中。如图16.1-1所示(:不同版本,对话框界面会有少许差异,但操作及内容完全相同)。

图16.1-1 Microsoft Office软件的对象插入对话框

如果要将Excel图表通过该方式嵌入到其他软件,建议将图表置于Excel的图表工作表中,这样可以非常方便地控制图表的显示窗口。当对象插入后,我们即可使用“单击鼠标右键>图表对象>[编辑]”来进行图表的直接编辑,只要熟悉Excel图表制作,在其他Microsoft Office系列软件中操作和在Excel中没有两样,图16.1-2的案例演示了在PowerPoint 2010中嵌入Excel图表。如果使用图表对象的[打开]按钮,则可在Excel中打开进行编辑,该方法可以将嵌入的工作簿另存到磁盘,图表对象的[转换]按钮对于Excel图表则无实质意义。

PowerPoint 2010中嵌入Excel图表的演示

图16.1-2 PowerPoint 2010中嵌入Excel图表的演示

一般直接复制Excel图表并粘贴到同版本的PowerPoint软件中时,Office也采用对象嵌入方式进行粘贴,且此时,展示图表复制到了嵌入工作簿对象的图表工作表中。同样的操作,在其他Microsoft Office系列软件中,视版本会有不同的处理机制,在Microsoft Office 2007和2010系列软件中,Excel图表已经变为一个公共组件,可以被其他大多数的Microsoft Office程序所支持。

VBA操作Excel图表对象

一般不建议将动态交互式Excel图表嵌入到其他软件中,因为Excel的所有交互将不再起作用,这种嵌入技术仅是一个Excel图表的展示窗口而已。要实现交互就必须使用VBA来操作这些OLE对象,这种操作通过后台对Excel的调用来完成。此方法的交互触发控件需要放在嵌入图表的宿主文档中,而不应该放在嵌入的Excel工作簿中。

这类应用仅在幻灯演示中有一定使用价值,图16.1-3的案例是一个在PowerPoint中嵌入Excel图表,配合窗体控件实现的交互式幻灯演示图表。实现过程主要借助VBA完成,涉及幻灯片的事件操作和OLE对象编辑。其中VBA处理幻灯片事件借助了类模块来实现,目的是关闭Excel软件,并释放Excel对象的后台调用,在幻灯演示结束和关闭演示文稿时触发事件。以下是制作步骤:

PowerPoint中嵌入Excel图表制作的交互式幻灯演示

图16.1-3 PowerPoint中嵌入Excel图表制作的交互式幻灯演示

1.在幻灯片中插入已经制作完成的Excel交互式图表工作簿对象,调整好显示界面窗口的大小。

2.在幻灯片中插入以下窗体控件:1个下拉列表框、两组选项按钮。每组选项按钮各两个,并使用置于底层的矩形自选图形区隔。在选项按钮属性对话框中,分别修改Caption属性为“2009”、“2010”、“昆山”、“东莞”。

3.按下键盘Alt+F11组合键打开VBE编辑器,插入一个模块,并键入以下代码:


程序代码:16.1-1 模块1的公有变量申明


4.选中下拉列表框控件,单击鼠标右键>查看代码,激活VBE编辑器,在Slide1中键入以下代码:


程序代码:16.1-2 Slide1的InitializeSlidel初始化过程


:此处使用循环遍历OLE对象名称的方法是因为,不同的电脑所显示的默认对象名称会出现差异,如果是使用PowerPoint 2007及其以上版本,建议在“开始>选择>选择窗格”中将对象名称改为固定名称。


程序代码:16.1-3 Slide1的ComboBox1_Change下拉列表更改


程序代码:16.1-4 Slide1的ComboBox1_GotFocus下拉列表获得焦点


程序代码:16.1-5 Slide1的OptionButton1_Click选项按钮1被选中


程序代码:16.1-6 Slide1的OptionButton1_GotFocus选项按钮1获得焦点


程序代码:16.1-7 Slide1的OptionButton2_Click选项按钮2被选中


程序代码:16.1-8 Slide1的OptionButton2_GotFocus选项按钮2获得焦点


程序代码:16.1-9 Slide1的OptionButton3_Click选项按钮3被选中


程序代码:16.1-10 Slide1的OptionButton3_GotFocus选项按钮3获得焦点


程序代码:16.1-11 Slide1的OptionButton4_Click选项按钮4被选中


程序代码:16.1-12 Slide1的OptionButton4_GotFocus选项按钮4获得焦点


5.在VBE编辑器中插入一个类模块“EventClassModule”,并键入以下代码:


程序代码:16.1-13 EventClassModule的App_PresentationClose幻灯文档关闭事件


程序代码:16.1-14 幻灯片结束放映事件


程序代码:16.1-15 彻底释放Excel对象


:若不及时释放Excel对象,在演示结束,再次演示时,交互效果将无法实现。

Microsoft Graph图表对象

当安装Office系列软件时在“Office工具”中勾选了“Microsoft Graph”(正常而言,该选项默认选中),则可在Office软件的安装目录下找到程序,该对象完全是一个OLE程序,无法直接执行,必须在其宿主程序中执行。在Microsoft Office系列软件2007版本以前,单击PowerPoint菜单的按钮,所插入图表为Microsoft Graph图表对象。

在Microsoft Office系列软件2007和2010中,若没有安装Excel,将会插入Microsoft Graph图表,这和通过“插入>对象”命令插入一个“Microsoft Graph图表”没有两样,该程序的图表制作及设置和Excel 2003几乎完全一致,唯一不同的是其使用自带的数据表来存储数据。虽然这个程序相较Excel图表要简单和便于操作,但使用该程序来制作图表,相较Excel还是有一定局限,同时该程序制作的图表也无法转换为Excel图表。该程序的界面如图16.1-4所示:

在PowerPoint 2010中嵌入Microsoft Graph图表

图16.1-4 在PowerPoint 2010中嵌入Microsoft Graph图表

在默认状态下,插入Microsoft Graph图表会创建一个显示示例数据的示例图表,需要双击嵌入的图表对象,向Graph数据工作表中逐个单元格手动输入实际数据,包括行标题和列标题。也可以在Graph对象为激活状态下,在“编辑”菜单上单击“导入文件”,在“导入数据”对话框中选择文件,把Excel工作簿或者其他文件的数据导入到Microsoft Graph图表数据表中。

知识扩展


推荐在PowerPoint中使用的一个图表插件:

Think-cell是一个基于Microsoft Graph的图表插件,可生成专业的咨询图表,配色和图表操作都很优秀。该软件可在PowerPoint和Excel中使用,以下是链接地址:

http://www.think-cell.com/

在其他软件中使用Excel图表

更多时候,我们可能需要在Word、PowerPoint、网页或是其他软件中使用Excel制作的图表,所有这些应用都给Excel的图表制作带来了新的挑战。

在Microsoft Office系列软件中,可将Excel图表视为对象,插入到相应的软件中。通过使用VBA还可将插入的图表对象实现交互效果,实现多层次的数据展示。Microsoft还提供了Graph图表对象来制作图表。

当在其他软件中无法使用Excel图表对象时,一个好的方法是将图表转化成图片形式来调用。借助网页形式的保存可获得gif或png格式图片,要获得其他格式的图片则需借助Excel之外的软件,也可使用VBA来获得各种类型的图片。

除使用图片形式将Excel图表放置到Web网页外,还可借助第三方工具或是Microsoft提供的Web应用来实现,这类应用有时则需要抛开Excel来制作图表。

BI仪表板:性能提高

化繁为简

仪表盘设计时应尽可能减少纯粹的数据表格部件的使用,表格过于细节,不够一目了然呈现全局,仅适合组织量化数据。虽然在数据检索上,数据表格的成行与成列表现更为优异,但在Excel中的操作,这类表格较易被鼠标选中,尤其是含有函数公式时,误操作所致的破坏更加致命。如果使用表格部件是必需的,那么如图15.4-3案例,配合Excel条件格式的图标集、数据条和迷你图来展示数据更加具有价值。

迷你图仪表板案例

图15.4-3 迷你图仪表板案例

从草图入手

保持最少的显示对象数目,尽可能少地使用图表对象,仪表板中包含太多部件,可视化效果就会使数据重要性降低,视觉中的重点不再是数据。多层仪表板的嵌套将导致使用者打开Excel工作簿的时间被加长,且工作簿的稳定性降低,使用起来反应迟钝。有多个按钮、复选框的触发器仪表板,将会增加Excel工作簿自动重算的频度,表格/图表部件和/或面板集受此影响,重绘会有延滞,进而影响使用感受。所以设计伊始请从草图开始,非常有必要,这样做的好处是可以更好地规划仪表板,以确保主要的脉络都已经被理清,减少那些不必要的内容,图15.4-4的案例即是一个这样的草图手稿。

一份BI仪表板设计手稿案例

图15.4-4 一份BI仪表板设计手稿案例

层次清晰

对于涉及具有层级表达的仪表板而言,处理好部件间或分组部件的相互关系其实并不是太容易,尤其层级关系。图15.4-5的案例是一个树状结构,此类应用多为杜邦分析法的延伸应用,可通过Excel的数据条来实现,也可使用VBA的工作表事件,将单元格设定为触发器来进一步使用。当然此类应用中,每个分层也可使用不同的图表部件,但是这种仪表板应用在Excel的整体空间布局上非常难以处理,故并不建议。

一个树状结构的BI仪表板

图15.4-5 一个树状结构的BI仪表板

BI仪表板:细节处理

1.布局将仪表板设计为显示器的一屏大小比较适合,在版面中切勿有大量空白,除公司标志外,切勿使用与数据无关的任何图片。图表部件和非图表部件的外观比例控制在4∶1、1∶3或2∶1。数据标记除使用图标外,也可使用颜色警示以及文字;交互部件的使用不易过多,一般在一个单一仪表板报表中使用的个数不宜超过5个。

2.数据:不论何种类型的仪表板,在仪表板的图表部件中都应该有一个目标基线,缺少了当前数据的参考会令使用者不知状况如何。重要的数据应该被突出强调,比如那些超标或未达标的数据。交互性的功能需要考虑整体数据动态变化,不应该将其应用到仅是一个图表部件的联动上。

3.图表:应用到仪表板的图表要保持简单易懂,这样也可实现仪表板简洁的界面外观。单一图表部件,一般在视觉中可见的图表类型需要尽量保持只有一个,在仪表板中使用较为复杂的组合图表并不是一个好主意。仪表板中要尽量避免使用饼图和环形图,以及三维类型图表。

4.格式:在仪表板上出现的数据,笔者建议均采用右对齐,可方便比较。勿使用饱和度和亮度过高的色彩,也请勿使用背景色。特别要避免使用Excel 2007和2010的视觉特效渲染,这对仪表板没有丝毫的帮助,反而是严重的视觉干扰。表格、图表的网格线如果不起分割和提示作用,应该被剔除,即便需要采用,也应该将其设置为淡色,以免在视觉中割裂部件。图表部件也不建议加阴影,容易分散注意,其次三维类型的图表切忌使用在仪表板中。

BI仪表板:典型应用

使用Excel制作仪表板是一个相对较为复杂的图表工程,这个工程的优劣有时关乎成本增加或是判断失误。“千里之堤毁于蚁穴”,所以有一些制作的关注焦点和细节需要特别留意。

除本书15.3-1案例的决策型仪表板外,仪表板根据使用目的的不同,还包括预警型和分析型两类常见仪表板。

预警型

这类仪表板以警戒当前数据的定性指标为主要目的,比如正常、警戒、异常,多采用和交通灯的红、黄、绿三色来进行提示。常使用在数据监控领域,比如工业控制,当数据的指标脱离了预定的控制基线时,红灯将亮起,图15.4-1就是一个这样的案例。

预警型仪表板案例

图15.4-1 预警型仪表板案例

分析型

分析仪表板以检视当前数据,通过各类数据组合来发现值得探究的现象或趋势,并结合额外数据及工具进行综合性分析为主要目的。此类仪表盘应用中多借助使用模型,比如财务的量本利盈亏平衡点分析、最佳经济订购量等模型。该类仪表板也多使用XY散点及气泡图表部件来展示数据,这两类图表部件多使用在趋势分析上,图15.4-2的案例就是一个典型应用。

分析型仪表板案例

图15.4-2 分析型仪表板案例

BI仪表板:关联

当在仪表板中使用了层级关系后,就必须使用交互的方法来使不同的层次关联在一起。在Excel中我们可以借助工作表控件和部件本身来完成交互,在仪表板中,此类交互往往需要牵一发而动全身,一个触发事件需要使多个图表部件的数据展示发生变化。

联系

1.切换

提供快捷简单的方法,来方便使用者通过鼠标单击的方式切换图表部件的不同数据显示。尤其是当仪表板包含多个面板时,需要添加切换选择按钮或链接,以方便使用者在不同面板间切换。在Excel中可以使用工作表控件按钮或是图表部件的VBA鼠标单击事件来实现。

2.检索

当某个部件或层级是另一部件和层级的细化说明时,需提供可供使用者选择的相关筛选触发器,以便对某个图表部件或层级进行数据展示的切片或是截段。在Excel中,下拉选框、滚动条都可以完成这些操作。笔者在第14章提供的滑块控件,可协助获取某一范围区间或时间跨度的数据。

交互

1.简化

在选择和使用按钮、列表框、滑块等控件时,要考虑到尽量简单,并有意减少使用的个数,不要把仪表板变成数据游戏的道具。交互体验越是繁杂,使用者获取到的信息就越少,甚至有时会严重影响使用者的决策判断。

2.自然

仪表盘设计时应充分考虑使用者将如何使用这些交互,其应该可以方便地从多个维度去解释数据。站在使用者的角度去考虑:单击按钮、链接等应该有怎样的外观,并通过使用者眼球和鼠标单击的动线设计来决定其放置位置,使作业流程无缝嵌入到仪表盘,具有自然流畅的使用感受,这样使用者的关注焦点就被锁定在了数据上。

3.接口

使用Excel来实现仪表盘的交互时,不同图表部件间的关联关系都是通过函数公式或定义名称完成。规划和设计这些公式时,必须要考虑仪表板的升级和维护作业,将公式设计得简单易读将会是省时省力的一个好习惯。

案例

图15.3-1是在图15.2-1仪表板案例基础上添加了交互控件的效果,其中滚动条用来使6个仪表盘显示具体到某个月的数据,下拉列表框则用来切换6个仪表盘显示特定的销售数据,同时两个条形图也和这两个控件关联。笔者在第14章提供的滑块控件和4个折线图关联,4个折线图同时和当前选中商品相关联,6个商品的数据切换,则使用仪表盘的VBA图表事件来完成。以下是详细制作步骤:

在图15.2-1案例基础上增加了交互的效果

图15.3-1 在图15.2-1案例基础上增加了交互的效果

1.在“Test1”工作表6个仪表盘下方添加如图15.3-1所示的滚动条工作表控件,该控件和“Q17”单元格相关联,如图15.3-2所示。

制作步骤1~3图示

图15.3-2 制作步骤1~3图示

2.在“Test1”工作表单元格区域“M17:O17”间增加下拉列表框工作表控件,数据源区域为“商品1”仪表盘下方的“C11:D13”单元格(如图15.3-3所示),并和单元格“L17”相关联,将单元格区域“K17:Q17”设置和图15.3-2所示一致。

制作步骤2图示

图15.3-3 制作步骤2图示

3.合并“Test1”工作表“C17:I18”单元格,并添加如下公式:

=TEXT(OFFSET(Data!$J$5,$Q$17,0),”yyyy-mm”)&”月”& CHOOSE($L$17,”零售”,”批发”,”网络”)&”数量比”结果如图15.3-2所示。

4.依次键盘Ctrl键,将“Test1”工作表6个仪表盘名称更改为“Chart 1”…“Chart 6”,在VBE中添加如下代码段,以完成仪表盘为触发器的设定:


程序代码:15.3-1 ChartClass类模块XChart_MouseDown 图表鼠标单击事件



程序代码:15.3-2 模块1中的XChart_MouseDown 将仪表盘和类模块关联



程序代码:15.3-3 模块1中的XChart_MouseDown 释放仪表盘和类模块的关联


:此处设定显示比例的目的是笔者在第14章提供的滑块控件在激活类模块关联时,非100%显示比例时,该控件的外观大小会改变。

5.在VBE中添加如下代码段,以完成图表事件类模块初始化和释放关联到工作簿的打开与关闭事件中:


程序代码:15.3-4 工作簿打开事件


:此处Application.OnTime是因为Workbook_Open事件发生时,直接执行将仪表盘和类模块的关联往往不起作用,所以需要待Excel工作簿完全被加载。


程序代码:15.3-5 工作簿关闭事件


6.依次设定“Test1”工作表的B4、K4、T4、AC4、AL4、AU4这6个单元格的条件格式如图15.3-4所示:

图15.3-4 仪表盘是否选中的条件格式

7.依次设置“Chart”工作表E5、G5、I5、K5、M5、O5单元格和E7、G7、I7、K7、M7、O7单元格的公式,该公式可参见图15.3-5箭头所指位置,不同商品请注意公式中OFFSET函数的rows参数:129所乘系数依次为0~5。如图15.3-5所示:

仪表盘是否选中的条件格式

图15.3-5 仪表盘是否选中的条件格式

8.在“Test1”工作表中依次设定仪表盘相对应的数据状态标示,图15.3-6以“商品1”为例说明了相关设定,其他5个仪表盘的设定与此相仿。

仪表盘是否选中的条件格式

图15.3-6 仪表盘是否选中的条件格式

9.在“Test1”工作表“T19:BB19”单元格区域中添加笔者在第14章提供的滑块控件(在窗体控件的其他控件中查找控件),并设置“AZ17:BC17”单元格区域外观样式如图15.3-7所示。在VBE中添加如下代码段:

图15.3-7 制作步骤9图示


程序代码:15.3-4 Test1工作表的ctlRangeSlider1_Change 滑块滑动事件


:此处没有使用控件ctlRangeSlider1_Scroll的事件,是因为滑动过程频繁的Excel函数公式的自动重算,会导致执行效率低下。

10.合并“Test1”工作表“T17:AD18”单元格区域,并添加如下公式:

结果如图15.3-8所示。

图15.3-8 制作步骤10图示

11.合并“Test1”工作表“C33:J34”单元格区域,并添加如下公式:

结果如图15.3-9所示。

图15.3-9 制作步骤11图示

12.添加如下定义名称:

13.修改以下图表的SERIES公式:

不同商品的数量对比

系列1:=SERIES(Test1!$C$17,Data!$B$6:$B$11,Test1!Adata,1)

系列2:=SERIES(,Data!$B$6:$B$11,Test1!Y1Max,2)

3类销售数量对比

系列1:=SERIES(“数量比较”,Data!$D$5:$F$5,Test1!Bdata,1)

系列2:=SERIES(,Data!$D$5:$F$5,Test1!Y2Max,2)

零售数据

系列1:=SERIES(,Test1!XData,Test1!Y1Data,1)

系列2:=SERIES(,Test1!XData,Test1!Y2Max,2)

批发数据

系列1:=SERIES(,Test1!XData,Test1!Y2Data,1)

系列2:=SERIES(,Test1!XData,Test1!Y2Max,2)

网购数据

系列1:=SERIES(,Test1!XData,Test1!Y3Data,1)

系列2:=SERIES(,Test1!XData,Test1!Y2Max,2)

平均单价

系列1:=SERIES(,Test1!XData,Test1!Y4Data,1)

系列2:=SERIES(,Test1!XData,Test1!Y3Max,2)

14.向商品1的仪表盘图表中添加一个矩形,并将其拖曳到大小与绘图区相同,设置为无边框,透明度100%,然后修改其名称为“点击查看商品1细节数据”。选中并复制到其他5个仪表盘,同时根据仪表盘对应的商品名修改矩形名称。

:此处使用矩形的目的是,当鼠标指向仪表盘时提供反馈给使用者去单击仪表盘,切换不同商品的详细数据,但在Excel 2007中该方法无法提供反馈。

学习思考


特别说明:

1)该案例并未包含目标值参考基准线,仪表盘的数据状态都是和历史最佳状态相比较的结果,现实使用中,这个比较基准应该是动态给出的。

2)这个案例由于要考虑多个版本的兼容问题,并没有过多美化,如果借助2007和2010可进行适当美化。

3)使用时需特别注意笔者提供的滑块控件的使用限制。