二维表是典型的Word思路的表格,这种表就是把某个字段下的项目分成几列显示,这对于数据分析是不方便的,尤其是无法使用数据透视表进行灵活的多维度分析,需要将二维表转换为一维表。
将二维表转换为一维表有很多种方法,其中较实用的是:➀多重合并计算数据区域透视表;➁使用Power Query工具。
图2-1所示是一个二维表,保存了每种产品在各地区的销售数据。地区本来应该是一个字段,保存在一列,各地区是该字段下的项目,而该表格中是按照地区名称分别保存为7列。现在要将该二维表变为只有产品、地区和销售三列的一维表,如图2-2所示。
图2-1 原始二维表
图2-2 图标一维表
制作这个一维表的详细步骤如下。
步骤1 在某个工作表中,按Alt+D+P组合键(有时候需要按两下P键),打开“数据透视表和数据透视图向导-步骤1(共3步)”对话框,选中“多重合并计算数据区域”单选按钮,如图2-3所示。
步骤2 单击“下一步”按钮,打开“数据透视表和数据透视图向导-步骤2a(共3步)”对话框,保持默认的选项设置,如图2-4所示。
步骤3 单击“下一步”按钮,打开“数据透视表和数据透视图向导-第2b步,共3步”对话框,单击“选定区域”文本框右侧的按钮,用鼠标选择数据区域,然后单击“添加”按钮,将数据区域添加进文本框,如图2-5所示。
图2-3 选中“多重合并计算数据区域”单选按钮
图2-4 保持默认的选项设置
图2-5 添加工作表的数据区域
步骤4 单击“下一步”按钮,打开“数据透视表和数据透视图向导-步骤3(共3步)”对话框,选中“新工作表”单选按钮,如图2-6所示。
图2-6 选中“新工作表”单选按钮
步骤5 单击“完成”按钮,就可以得到基本的透视表,如图2-7所示。
步骤6 双击数据透视表右下角的总计单元格(本例中是47776数字单元格),得到一个新的工作表,将数据表转换成如图2-8所示的一维表。
步骤7 单击“设计”选项卡“新建表格样式”组中的“清除”按钮,如图2-9所示,将表格样式清除。
图2-7 基本的透视表
图2-8 自动生成的一维表
图2-9 清除表格样式
步骤8 单击“设计”选项卡“工具”组中的“转换为区域”按钮,如图2-10所示,将表格转换为普通区域。
图2-10 单击“转换为区域”按钮
步骤9 最后删除D列“页1”,修改其他三列的名称分别为“产品”“地区”“销售”,就得到了需要的一维表,如图2-2所示。
2.1.1小节中介绍的二维表是最常见的,转换也很方便。下面的案例中是一个准二维表,有两列文本,如图2-11所示。
严格来说,这不是一个真正意义上的二维表,因为有两列文本,但是从C列开始是各地区的数据,这些地区实质上应归属于字段“地区”。因此,为了便于分析数据,需要将这个表格转换为一个有4列数据的一维表,如图2-12所示。
图2-11 有两列文本的二维表
图2-12 需要转换成的一维表
多重合并计算数据区域透视表只适合一列文本的情况。如果对这个数据区域制作数据透视表,就会得到如图2-13所示的结果,双击合计单元格获取的一维表也是错误的,如图2-14所示。
图2-13 制作的数据透视表
图2-14 获取的错误的一维表
解决这个问题最简便的方法是使用Power Query工具,这将在后面章节详细介绍。如果不能使用Power Query,则可以对数据进行变通处理,再使用数据透视表来解决,详细步骤如下。
步骤1 在“业务员”列后面插入一列“辅助列”,将“产品”和“业务员”连接合并成一列,连接合并的公式为“=A2&"-"&B2”,如图2-15所示。
图2-15 设计“辅助列”
步骤2 使用包含“辅助列”在内的后面的数据区域,制作多重合并计算数据区域透视表,如图2-16所示。
图2-16 制作多重合并计算数据区域透视表
步骤3 制作的数据透视表如图2-17所示。双击右下角的总计单元格(即47776数字单元格),得到一个一维明细表,如图2-18所示。
图2-17 制作的数据透视表
图2-18 得到的一维明细表
步骤4 在A列和B列之间插入一列,如图2-19所示。选择A列,按照分隔符进行分列(分隔符就是短横线“-”),就得到了如图2-20所示的表格。
图2-19 插入一列
图2-20 对原始列A进行分列
步骤5 对表格进行格式处理,将其转换为普通表格。
思考
如图2-21所示,如果数据表是有合并单元格的情形,该如何进行整理呢?
这样的表格整理起来并不难,首先取消合并单元格并填充,然后设计辅助列,再采用前面介绍的方法进行处理,详细的操作步骤请观看视频。
图2-21 有合并单元格的二维表
无论是一个工作表的二维表,还是多个工作表的二维表,都可以使用多重合并计算数据区域将其汇总并转换成一个一维表。
图2-22~图2-24是3个部门的每月费用表,分别保存在3个工作表中,现在要求将这3个工作表中的数据汇总整理成一个有4列数据的一维表,如图2-25所示。
图2-22 财务部每月费用表
图2-23 人事部每月费用表
图2-24 销售部每月费用表
图2-25 要求的一维表
这个一维表的制作很简单,首先制作3个表格的多重合并计算数据区域透视表,如图2-26和图2-27所示。
图2-26 添加3个表格的数据区域
图2-27 制作的3个表格的数据透视表
双击图2-27的数据透视表右下角的总计单元格,得到如图2-28所示的一维表。
图2-28 得到的一维表
采用前面介绍的方法清除表格的样式,将表格转换为区域,修改列标题,如图2-29所示。将表格“部门”列中的“项1”替换为“财务部”,“项2”替换为“人事部”,“项3”替换为“销售部”,得到如图2-30所示的结果。
图2-29 格式化后的表格
图2-30 替换默认项名称为具体的部门名称
最后,将D列的部门数据调整到第一列,就得到了需要的一维表的结果。
如果使用的是Excel 2016以上的版本,可以使用Power Query工具进行转换,这种方法更方便、更灵活,不仅适用于单列的二维表,也适用于多列的二维表。
图2-31显示的是一个有两列文本(产品和业务员)的二维表,现在要将其转换为有4列数据的一维表,如图2-32所示。
图2-31 有两列文本的二维表
图2-32 转换后的一维表
要进行这种转换,使用Power Query是最简单的,详细的操作步骤如下。
步骤1 单击数据区域内任一单元格。
步骤2 选择“数据”→“获取和转换”→“从表格”命令,如图2-33所示。
图2-33 “从表格”命令
步骤3 打开“创建表”对话框,选择数据区域,并勾选“表包含标题”复选框,如图2-34所示。
图2-34 选择数据区域
说明:
默认情况下,打开“创建表”对话框时会自动选择整个数据区域,因此不需要手工选择。
步骤4 单击“确定”按钮,即可打开Power Query编辑器,如图2-35所示。
图2-35 Power Query编辑器
步骤5 选择前两列“产品”和“业务员”,右击列标题,在弹出的快捷菜单中选择“逆透视其他列”命令,如图2-36所示。
图2-36 选择“逆透视其他列”命令
这样就得到了如图2-37所示的结果,即将各列地区的数据合并到一列中,得到一个一维表。
图2-37 转换后的一维表
步骤6 将两列默认的列标题“属性”和“值”重命名为“地区”和“销售”,如图2-38所示。
图2-38 重命名列标题
步骤7 选择“主页”→“关闭并上载”命令,如图2-39所示。
图2-39 选择“关闭并上载”命令
将整理结果导入Excel工作表中,如图2-40所示。
图2-40 整理好的一维表
最后采用前面介绍的方法清除表格样式,将表格转换为区域,得到普通表格,如图2-32所示。
不论是一个二维表还是多个二维表,使用Power Query同样可以快速对其进行合并与转换。下面结合具体案例,说明使用Power Query合并与转换的具体方法和步骤。
图2-41所示是4个二维数据表,保存了每个季度的每种产品、每个业务员、各地区的销售数据,现在要将它们合并起来,并转换为一维表,结果如图2-42所示。
图2-41 4个二维数据表
图2-42 转换后的一维表
利用Power Query进行这种合并转换很简单,详细的操作步骤如下。
步骤1 选择“数据”→“新建查询”→“从文件”→“从工作簿”命令,如图2-43所示。
图2-43 新建查询功能
步骤2 打开“导入数据”对话框,从文件夹中选择该案例的工作簿,如图2-44所示。
图2-44 选择工作簿
步骤3 打开“导航器”对话框,在左侧选择顶部的工作簿名称,如图2-45所示。
图2-45 选择顶部的工作簿名称
步骤4 单击右下角的“转换数据”按钮,打开Power Query编辑器,如图2-46所示。
图2-46 Power Query编辑器
步骤5 选中最后三列数据并右击,在弹出的快捷菜单中选择“删除列”命令,如图2-47所示,得到如图2-48所示的结果。
图2-47 删除最后三列数据
图2-48 删除不需要的三列数据后的表格
步骤6 单击Data列右侧的展开按钮 ,展开一个筛选窗格,取消勾选“使用原始列名作为前缀”复选框,其他保持默认设置,如图2-49所示。
图2-49 取消勾选“使用原始列名作为前缀”复选框
这样就将各工作表数据展开合并到一个表格中,如图2-50所示。
图2-50 展开合并每个工作表数据
说明:
这是使用Power Query合并工作簿中多个工作表的基本方法,这种合并是将每个工作表中的全部数据(包括第一行的标题)堆积在一起,因此合并表中有数个标题。
步骤7 选择“主页”→“转换”→“将第一行用作标题”命令,如图2-51所示,将第一个工作表中的标题作为合并表的标题使用,得到如图2-52所示的表格。
图2-51 “将第一行用作标题”命令
图2-52 提升标题后的表格
前面说过,这种合并是将每个工作表中包括第一行标题在内的全部数据堆积在一起,导致合并表中有数个标题,现在已经将第一个表的标题作为合并表的标题,还有其他表的标题存在,需要将这些原始表的列标题筛选掉。
步骤8 在某个方便筛选的列中进行筛选,如图2-53所示。
图2-53 筛选原始表多余的列标题
这样就得到了一个真正的合并表,如图2-54所示。
图2-54 几个工作表数据的合并表
步骤9 选中前三列数据并右击,在弹出的快捷菜单中选择“逆透视的其他列”命令,得到转换后的一维表,如图2-55所示。
图2-55 转换后的一维表
步骤10 将默认的列标题“一季度”“属性”“值”分别重命名为“季度”“地区”“销售”,如图2-56所示。
图2-56 重命名列标题
步骤11 将合并表导入Excel工作表中,就得到需要的一维表了,如图2-42所示。