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图表

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

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

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

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

BI仪表板:细节处理

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

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

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

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

强烈表达差异[打草惊蛇]

在Excel图表的实际制作过程中,我们可能知道自己想要表达什么,但却往往不知该从何下手。此时,可以尝试使用以下方法来主动出击,找寻图表制作的切入点。

  1. 图表是将数据梳理结果化繁为简、清晰表达的工具,使用正确且直观的方法往往更有说服力。
  2. 可视化数据展示可以使用多种方法,简单和直接的方法往往来自于跳出Excel图表本身。
  3. 一分为二地看待和处理我们面临的数据和问题,可以轻松找到问题解决的突破点。
  4. 通过强制将Excel图表分类坐标转换为时间刻度,往往可以制作出看似Excel无法完成的图表。
  5. 将两类不同的数值类型放进同一类型的图表系列中,可以获得意想不到的效果。
  6. 通过给不同度量单位的多种数据建立统一的参考基准,可以将这些数据整合在一个图表之中。

强烈表达差异[打草惊蛇]:不论何种图表表达形式,只要主诉求表达超过两个数据点,就会在视觉中产生差异比较。寄希望于通过一个图表将数据包含的所有信息都阐释清楚,非常不现实。当我们试图将数据丢入图表,使用视觉来直观判断这些差异时,会发现图表表达差异诉求时的不尽如人意。理所当然的习惯认知,会使我们在这个问题上犯下错误。

面积类图表中的“0”值处理

往往大家更加关心如何在面积类图表中剔除“0”值,尤其是饼图和环形图。当然最为直接的方法就是一个个手工去设置标签,但这样非常令人沮丧,烦琐且没有效率。此处总结一些去除“0”值的方法。

1.仅对数据标签进行设置,使其在视觉上不可见。

1)VBA删除法

通过一个个标签的循环判断来删除标签,等于模拟手工删除。


程序代码:6.5-2 VBA循环判断删除”0″值标签


2)数字格式法

该方法主要针对标签内容为数值的情况下,使用数据标签格式>数字>自定义:0.00;;;,若要剔除分类内容的标签,必须和辅助数据配合使用。使用该方法时需要说明:饼形图不可以使用引导线,标签间的分隔符设置必须为空格和新行模式。

2.一劳永逸的方法是:直接将“0”值项从图表数据源引用中剔除的数据整理法,该方法主要针对饼形图和环形图。

1)数组函数辅助区域+定义名称法

该方法需使用数组公式来将“0”值项从原始数据集中剔除,使用起来有一些难度。定义名称可以采用:

=OFFSET(初始单元格,0,0,MATCH(“”,数据所在单元格区域,0)-1,1)

2)排序+定义名称法

这是笔者推荐的方法,相较而言简单、直接。对于饼形图和环形图,可以很方便地了解谁的占比最大。定义名称可以采用:

=OFFSET(初始单元格,0,0,MATCH(0,数据所在单元格区域,0)-1,1)

3)完全定义名称法

这是所有方法中最为复杂的方法,由于图表引用定义名称的限制,需将定义名称进行多步分拆处理,该方法其实就是“数组函数辅助区域+定义名称法”的函数封装形式。以下定义名称具有较好的通用性,使用时仅需修改“A原始分类”和“A原始数据”两个定义名称的单元格引用即可,如表6.5-10所示:

定义名称及具体公式

表6.5-10 定义名称及具体公式

使用高级筛选功能和数据透视表也可实现。高级筛选也需和定义名称配合使用,每次变更数据源数据后,需要手工操作完成筛选作业;数据透视表生成的图表是数据透视图,这类图表在外观管理上有一定局限性。

图表的自动化:整理图表系列边框及标签位置

有时,有些图表的制作过程并不复杂,但格式化图表则需要大量的时间,这样的工作不但费时费力,枯燥且毫无乐趣可言。通过录制一小段宏,修改为制图的小帮手,不但充满乐趣,而且会使我们很有成就感,何乐而不为?程序代码6.4-3即是这样的一个例子。


程序代码:6.4-3 VBA整理图表系列边框及标签位置


单击“整理系列”按钮后的效果如图6.4-3所示,该节点图由48个堆积条形图和2个XY散点图系列构成,由于考虑到本书叙述的结构性问题,该图表的具体制作本节不进行深入的讲解,请对此有兴趣的读者根据数据和图表进行学习。

图6.4-3 VBA整理节点图系列边框和系列标签

示例文档


本书所附案例文档6.4为本节所述案例的具体实现。

案例中包含了本节所述的所有VBA代码,读者可参照案例文档进行演练学习。

图表的自动化:批量生成图表

有时我们需要根据数据的不同分类动态生成多个图表,这些图表具有一致的外观,唯一不同的仅仅是图表系列所引用的数据为不同单元格区域,使用手工一个一个去生成,或是通过复制修改的方法来获得这些图表不仅费时费力,而且容易出错,使用VBA来完成无疑是一个简单高效的方法。程序代码6.4-2所示是一个根据不同产品动态生成图表的案例,这个案例绝大部分代码的编写也是基于录制宏,尤其是图表格式设置部分。


程序代码:6.4-2 VBA批量生成图表


该程序实现了根据产品名称动态生成图表,并格式化的功能,同时该代码不受产品所占单元格数量多寡影响。如图6.4-2所示为单击“动态生成图表”按钮后所生成的5个不同产品的销售状况柱形图表。

VBA动态批量生成图表效果

图6.4-2 VBA动态批量生成图表效果

图表的自动化:数值刻度的最大/最小值设定

无论版本,Excel图表均默认提供了自动设置的数值轴刻度,但遗憾的是并未提供类似图表系列数据源的单元格引用功能。有些时候我们制作的图表往往需要手动来设置刻度的最大/最小值,这些手动设置的数值在图表系列引用的数据源数据变化后,大多数情况下必须要再次更改最大/最小值设定,这是一件非常烦琐的事。如何使数值轴刻度的最大/最小值设定和单元格关联,便成为一个非常有价值的问题,解决这个问题的答案便是VBA。

图6.1-1的案例中分割布局的辅助系列使用了数值1,并设置在了次数值纵轴,采用百分比堆积柱状图。如果不设置次数值纵轴,并使用簇状柱形图,则该辅助系列的引用数值就必须始终是主数值纵轴的当前最大值。面临的挑战首先是如何动态获得主数值纵轴的当前最大值;其次由于辅助系列的引用数值变化,主数值纵轴的当前最大值亦会自动发生变化;最后是这个主数值纵轴的刻度设定必须在图表系列引用数值发生变化时动态变化,而非静态。

录制宏

单击“录制宏”按钮,选中分割布局的辅助系列引用的单元格数值区域,在编辑栏进行赋值,录得以下代码段,获取该段代码的目的是后续将图表刻度最大值赋值给单元格。


程序代码:6.4-1a VBA动态图表刻度 录制宏 获取单元格赋值语句


单击“录制宏”按钮,激活图表并选中图表主要数值刻度,在坐标轴格式中设定刻度最大单位为固定模式,录得以下代码段,获取该段代码的目的是后续将单元格赋值给图表刻度最大值,以及获得图表的名称。


程序代码:6.4-1b VBA动态图表刻度 录制宏 设定图表主要数值刻度


整理代码

将上述两段录制宏整理为下列代码段,完成主代码。该代码段包括初始化代码段和主作用代码段两部分。


程序代码:6.4-1c VBA动态图表刻度 整理录制宏


关联到工作表事件中

完成上述代码后,要使图表和数据联动,实现无须借助人工参与的自动化,必须使代码和工作表事件建立关联关系。


程序代码:6.4-1d VBA动态图表刻度 与工作表事件关联


SIPOC中的S、I、P、O、C详解

SIPOC是从供应商到客户的过程逻辑审视管理方法。一个图表的制作过程也包括了这5个部分(如图5.4-24所示):

SIPOC过程管理模型

表5.4-24 SIPOC过程管理模型

  • S 供应商:数据的来源;
  • I 输入:数据及设计规划;
  • P 过程:图表的制作;
  • O 输出:图表的整理;
  • C 客户:审视和确认图表。

S:好的开始是成功的一半

图表基于数据,在开始作图之前确认一下这些数据是否准确非常有必要。如果数据来自于某些数据库或网络,需确保数据的链接正常,且数据的格式正确。一个好的建议是将这些链接自其他数据源的数据复制下来,选择性粘贴方法转为Excel的本地静态格式,包括来自数据透视表中的数据。

有些时候,Excel导入的数据会是文本格式,最简单的确认方法是:这些文本格式的数据在Excel单元格中通常为左对齐,如果是数值格式,Excel默认会在单元格中右对齐。

小技巧


要将工作表中的文本转换为数字,可以使用本文中介绍的任一种方法。

注意:

每种方法均假定读者已将单元格中的“数字格式”更改为“常规”。请按照下列步骤操作:

1)在“格式”菜单上,单击“单元格”。

2)在“数字”选项卡上,单击“分类”下的“常规”,然后单击“确定”按钮。

方法:

1)使用错误按钮

如果数字显示为文本的单元格中左上角有错误指示器,则请按照下列步骤操作。

❶ 在“工具”菜单上,单击“选项”。

❷ 单击“错误检查”选项卡。

❸ 单击选中“启用后台错误检查”复选框。

❹ 单击选中“数字以文本形式存储”复选框。

❺ 单击选中读者要打开的其他规则。

❻ 单击“确定”按钮。

❼ 单击包含错误指示器的单元格。

❽ 单击单元格旁边的错误按钮,然后单击“转换为数字”。

注意:此方法假定Excel中的后台错误检查功能已打开,否则不能使用此方法。

2)在单元格中重新键入值

要在单元格中重新键入值,在“格式”菜单上,单击“单元格”,然后单击“数字”选项卡,更改单元格的数字格式,并重新键入数字即可。

3)在单元格中直接编辑

要在单元格内部直接编辑,请按照下列步骤操作。

❶ 在“工具”菜单上单击“选项”。

❷ 在“编辑”选项卡上,验证选中了“单元格内部直接编辑”复选框,单击“确定”按钮。

❸ 双击要设置格式的单元格,然后按Enter键。

4)使用“选择性粘贴”命令

要使用选择性粘贴命令,请按照下列步骤操作。

❶ 在任一空单元格中,键入值1。

❷ 选择键入了1的单元格,然后单击“编辑”菜单上的“复制”。

❸ 选择要将其中的值转换为数字的单元格。

❹ 在“编辑”菜单上,单击“选择性粘贴”。

❺ 在“操作”下,单击“乘”。在“粘贴”下,单击“值”,然后单击“确定”按钮。

❻ 删除在空白单元格中键入的值1。

:某些软件的负值显示将负号(-)放在值的右侧。要将文本字符串转换为标准数值,读者必须返回文本字符串的所有字符(最右侧的负号字符除外),然后将结果乘以-1。例如,如果单元格A1中的值为128-,则以下公式可以将文本转换为值-128:

=LEFT(A1,LEN(A2)-1)*-1

5)删除隐藏字符和空格

如果数据排列在单个列或行中,此方法效果最佳。该方法使用TRIM和CLEAN函数删除随文件导入的多余空格及非打印字符。下面的示例假定数据位于A列,首行为第1行($A)。要删除隐藏字符和空格,请按照下列步骤操作。

❶ 在A列的右侧插入一列。为此,请单击“B”,然后在“插入”菜单上单击“列”。

❷ 在所插入的列的第一个单元格(B1)中键入以下内容:

$B=VALUE(TRIM(CLEAN(A1)))

❸ 在B列中,选择包含A列中数据的单元格右侧的所有单元格。

❹ 在“编辑”菜单上,指向“填充”,然后单击“向下”。新列包含A列中文本的值。

❺ 选定同一区域后,单击“编辑”菜单上的“复制”。

❻ 单击单元格A1,然后在“编辑”菜单上单击“选择性粘贴”。在“粘贴”下,单击“值”,然后单击“确定”按钮来将转换的值重新粘贴到A列的顶部。

❼ 删除B列。具体操作方法是,单击该列,然后单击“编辑”菜单上的“删除”按钮。

A列中的文本现在已成为数字格式。

:此方法可能不会删除非打印空白字符。例如,空白字符Chr$(160)不会删除。

6)使用Microsoft Visual Basic for Applications(VBA)过程

创建一个VBA宏,以便在选定的单元格或选定的单元格区域中重新输入数字。具体操作步骤如下:

❶ 键盘Alt+F11组合键启动Visual Basic编辑器。

❷ 在“插入”菜单上,单击“模块”。

❸ 将下面的宏代码键入新模块中:


程序代码:5.4-1 快速转换文本为数值格式

或使用数组赋值方法:



❶ 键盘Alt+F11组合键切换到Excel。

❷ 如果尚未选中要转换的单元格,则将其选中。

❸ 在“工具”菜单上,指向“宏”,然后单击“宏”。在“宏名”列表中,单击“EntValues”或“EntValues1”,单击“运行”。

7)使用“文本分列”命令

如果数据排列在单列中,该方法效果最佳。操作步骤说明如下:

❶ 选择包含文本的一列单元格,在“数据”菜单上,单击“分列”。

❷ 在“原始数据类型”下,单击“分隔符号”,然后单击“下一步”。

❸ 在“分隔符号”下,单击以选中“Tab键”复选框,然后单击“下一步”。

❹ 在“列数据格式”下,单击“常规”。

❺ 单击“高级”,对应设置“十位分隔符”和“千位分隔符”,单击“确定”按钮,单击“完成”。


I:分析与选择

有了数据之后,我们所要做的就是根据诉求,规划数据如何变为图示化语言。不同的诉求会有不同的图表表达方式,如果不清楚诉求,制作图表无从谈起,所以首要考虑的内容是图表诉求

其次根据诉求的不同,需要确认的是:要使用何种表达形式和布局的图表。除了一些ISO(国际标准化组织)或其他标准化文件中有明确定义的工程与技术类的图表外,大多数使用在日常办公及商业领域的图表其实没有非常准确的答案。麦肯锡公司的基恩·泽拉兹尼(Gene Zelazny)在《用图表说话》一书中提供了一个非常简单有效的对照表,安德鲁·阿贝拉(Andrew Abela)在自己的博客上也提供了一个很有价值的选择指南,但这些仅仅是针对常用图表在约定俗成上的推荐。

根据本书第1章和第3章的内容,将日常使用的图表类型归纳为以下的对照表(如表5.4-25所示),该表旨在提供一个帮助读者根据本书内容选择图表的方法。不同的表达形式及布局在图表数值、差异、趋势各项势能中均可能会出现,关键是要去判断该种表达形式及布局的强弱优先级。不同的列表形式可以表达数值、差异、趋势等不同的图表势能,列表形式的优点在于可以同时进行水平和垂直的比较,马上准确获知数值。

图表形式与布局对照表

表5.4-25 图表形式与布局对照表

:往往一个图表中会包含多个表达形式和布局,表5.4-25所给出的关系并非标准的典型类型,也不是图表的全部。

最后,当图表形式和布局被确定下来,需要考虑的就是图表形式和布局如何被实现。这包括坐标轴如何被处理、系列的叠放层次及其所在的群组和集合等元素设定,以及彼此间的关系如何被处理。如果图表的系列较多,且形式和布局多样,一个非常好的建议是:在手边使用纸张和笔,设计一个草图(如图5.4-26所示),并记录下每个关键的部分,这一点非常重要,有助于快速理清头绪。

图5.4-26 图表的草图设计案例

当然所有这些都必须要求我们站在客户的立场去考虑问题,而不仅仅是自我的认知。再次强调:GIGO(Garbage In Garbage Out)原则:输入的是垃圾,出来的自然也是垃圾。

P:修正与调整

完成上述两点,就进入了Excel图表的实现阶段。由于Excel图表的高度可自定义性,使得使用Excel制作一个图表的过程和一些统计类软件完全不同,这类软件通常一键可以生成各类标准样式的图表,且无须使用者去参与完成那些中间计算的工作;Excel则完全不同,一些复杂的图表,中间计算的部分需要使用者来计算,然后才能完成图表制作。

如图5.4-27所示,Excel图表的制作是一个“时间+技巧+逻辑=成本”的过程,有时这个成本高得有些令人退却。所想并非所得,要想得到和最初想法比较一致的结果,可能在制作的过程中要不断调整我们作图的逻辑,才可实现期望所得。

图表制作的过程模型

图5.4-27 图表制作的过程模型

O:润色与修饰

当完成图表制作后,润色与修饰图表上的每个元素就是一个重要任务。很多读者喜欢在制作图表的同时完成图表相应元素颜色、字体大小、粗细这些视觉外观的格式化,其实这是一个非常不好的习惯,很多情况下,在图表未正式完工前,一切元素均属不确定对象,这样就会出现大量格式化工作的多次重复设定,无疑在增加制作的成本,且由于这些元素间的关系没有最终定稿,此时的格式设置会导致最终成品在视觉观感上欠妥,影响图表诉求表达。

一般建议:将那些用于辅助作图的中间计算部分单元格区域和图表分离开来会比较好,这将会减少对读者视觉的干扰以及读者误修改带来的图表失真。Excel图表对数据源的引用相当智能,当这些数据源被移动时,图表系列的源数据引用地址也会动态调整,所以根本不用担心这样的操作会对图表产生的相应影响。

图表的润色与修饰固然重要,但我们也需要考虑图表所在的上下文环境布局、润色和修饰。只有保持相互间的协调,这样的图表才能更好地融入到报告中去。

C:检视确认

图表真正完成,请再次确认和检查图表,必要时,在正式发布图表前,请他人看看,这将没有坏处。最为关键的是,要确认图表使用在电子邮件、网络共享环境下是否依然工作正常。记住所有的一切都是为了使图表讲述一个有关数据的生动故事,这个故事的目的是说服他人接受这个图表的诉求。