1.1 不规范表格结构的重新搭建
所谓不规范表格结构,就是表格结构不满足数据库要求,比如二维表格,带合并单元格的多行标题,不同类型的数据保存在了同一列,等等。下面我们结合实际工作中经常遇到的几个问题,介绍表格结构重新搭建的实用技能和技巧。
1.1.1 把多行标题的数据区域转换为数据清单
具有合并单元格的多行标题的数据表格,是很多人喜欢设计的一种表格结构,实际上,这样的表格是报告的结构,而不是标准数据库的结构,所以无法使用透视表来汇总分析数据。
案例1-1
图1-1是一个具有合并单元格的多行标题的数据表格,这个表格在分析数据方面非常不方便,除非使用函数做固定格式的分析报告。如果想使用透视表来进行各角度、多维度的分析,则需要把这个表格转换成图如1-2所示的数据清单。
图1-1 带合并单元格的多行标题的表格
下面介绍这种类型表格的转换方法。
01 首先设计如图1-3所示的表格结构。
图1-2 标准的数据清单
图1-3 设计标准数据清单结构
如果产品个数不多,可以使用手工的方法在A列和B列分别输入产品名称和月份名称。
但如果产品很多,比如有产品100个,每个产品所用月份数为12个,那么需要设计100*12=1200行数据,这样的工作量是比较大的,也是很烦琐的。我们可以使用下面的方法快速构建A列产品名称和B列月份名称数据列。
(1)先设计一个二维表格,A列是产品名称,第1行是月份名称,然后在单元格都输入数字1,如图1-4所示。
图1-4 设计辅助区域
(2)按“Alt+D+P”组合键,打开“数据透视表和数据透视图向导—步骤1(共2步)”对话框,选择“多重合并计算数据区域”选项按钮,如图1-5所示。
(3)单击两次“下一步”按钮,打开“数据透视表和数据透视图向导—步骤2b(共3步)”对话框,选择辅助数据区域,单击“添加”按钮,如图1-6所示。
图1-5 按“Alt+D+P”组合键,打开“数据透视表和数据透视图向导”对话框
图1-6 选择添加区域
(4)单击下一步,打开“数据透视表和数据透视图向导—步骤3(共3步)”对话框,选择“新工作表”选项按钮,如图1-7所示。
图1-7 选择透视表显示位置
(5)单击“完成”,就得到一个基本的透视表,如图1-8所示。
(6)双击透视表最右下角的单元格,也就是两个“总计”交叉单元格(此案例是数值216的单元格),就得到一个明细表,如图1-9所示。
图1-8 制作的基本透视表
图1-9 得到的明细表
(7)删除C列和D列,然后把A列和B列的数据复制到一个新工作表中,就得到产品名称以及月份名称列表(参阅图1-3)。
(8)最后删除无用的附表工作表。
02 在如图1-3所示的单元格C2输入下面的公式,然后往右往下复制,即得到一个规范的数据清单(参阅图1-2):
=INDEX('2015年销售汇总'!$B$3:$AK$20,MATCH($A2,'2015年销售汇总'!$A$3:$A$20,0),MATCH($B2,'2015年销售汇总'!$B$1:$AK$1,0)+COLUMN(A1)-1)
1.1.2 将二维表格转换为数据清单
所谓二维表格,就是表格只有一行标题和一列标题,这样结构的表格实际上是简单的汇总表结构,但是很多人把它当成了基础表格。反过来,如果手头是这样的表格,现在要使用透视表进行各个角度的多维度分析,又该如何把这个二维表格还原成数据清单呢?
案例1-2
有人可能要问了:干吗辛辛苦苦地把这样的二维表进行转换啊?这样不是挺好的吗?
比如下面图1-10所示的二维表,是各个部门各项费用的汇总表,很直观也很清楚。但是,如果要分析各个部门的各项费用的占比,或者某项费用的各个部门的占比,是不是要设计表格,创建计算公式,很不方便?比如要制作两层分类结构的报表(外层是部门,内层是费用;或者外层是费用,内层是部门),是不是觉得很难?
图1-10 典型的二维数据表
如果把这个表格转换成如图1-11所示的清单型表格,就可以创建透视表灵活分析数据了。图1-12就是利用透视表分析的结果(透视表+图表,更加清晰)。
图1-11 清单型数据表
图1-12 利用透视表灵活分析部门费用
下面介绍如何把二维表格转换为数据清单。主要步骤如下。
01 按“Alt+D+P”组合键,打开“数据透视表和数据透视图向导—步骤1(共3步)”对话框,选择“多重合并计算数据区域”选项按钮,如图1-13所示。
02 单击两次“下一步”按钮,打开“数据透视表和数据透视图向导——步骤2b(共3步)”对话框,选择辅助数据区域,单击“添加”按钮,如图1-14所示。
图1-13 按“Alt+D+P”组合键,打开“数据透视表和数据透视图向导”对话框
图1-14 选择添加区域
03 单击下一步,打开“数据透视表和数据透视图向导—步骤3(共3步)”对话框,选择“新建工作表”选项按钮(参阅图1-7)。
04 单击“完成”,就得到一个基本的透视表,如图1-15所示。
图1-15 制作的基本透视表
05 双击透视表最右下角的单元格,也就是两个“总计”交叉单元格(此案例是数值840097单元格,也就是单元格K14),就得到一个明细表,如图1-16所示。
06 在表格的“设计”选项卡中,从“表格样式”中单击“清除”按钮,清除表格格式,如图1-17所示;并在“工具”中单击“转换为区域”,如图1-18所示。这样就把得到的表格转换为普通数据区域。
07 最后修改表格标题,得到需要的数据清单。
图1-16 得到的明细表
图1-17 清除表格样式
图1-18 转换为普通数据区域
1.1.3 将多列文字描述转换为一个列表清单
有时候,我们也会遇到这样的表格:有很多列,每列是一个部门下员工姓名列表,现在要做成一个员工名单清单,以便于输入其他数据,并进行分析。
案例1-3
图1-19就是这样的一个表格,现在要求转换为右侧所示的名单清单。主要步骤如下。
图1-19 原始数据及要求的结果
01 首先在原始数据区域左侧插入一个辅助列,输入标题和任意的数据,如图1-20所示。
图1-20 在原始数据左侧插入辅助列
02 按“Alt+D+P”组合键,制作包含辅助列在内的数据区域的多重合并计算数据区域透视表,详细步骤前面两个例子都有介绍,此处不再赘述。就得到基本的数据透视表,如图1-21所示。
03 双击透视表最右下角的两个“总计”交叉单元格,就得到一个明细表,如图1-22所示。
04 删除A列和D列,把表格样式清除,并把表格转换为区域,修改标题。
05 注意此时的姓名列有空格,然后再选择B列,删除B列所有空单元格的行,最后就得到需要的结果。
如何批量删除空单元格所在的行,我们将在后面相关的例子中进行介绍。
图1-21 制作的基本透视表
图1-22 得到的明细表