对于来自不同数据源、多个时间点或物理区域的数据,在进一步使用前往往需要对数据进行合并,本文将讨论几种常见的数据合并方式,如纵向合并数据、横向合并数据,以及合并计算。
纵向合并的数据一般是在列的顺序相同、含义相同的情况下,用于扩展数据记录,如下图中的两组数据。
如图中所示,两组数据的结构完全一样,所以只需要将其中的数据行粘贴到另一组数据下方即可,如下图所示。
有时候,数据结构可能不完全一样,如列的顺序和含义不完全相同,此时就需要将数据整理为相同的结构,如下图所示的两组数据。
如上图的情况,整理数据时,一方面将两组数据都包含的列按相同顺序排列,另一方面将多出的列放在最后,如图中的第二组数据就可以整理为如下图所示的格式。
整理后,第二组数据的前5列与第一组相同,只多出了“物理”列,此时,可以将第一组的数据行粘贴到第二组下方,只是这些记录的物理分数为空,如下图所示。
更复杂的情况是两组中都存在另一组中没有的列,如下图所示,第一组有化学分数,第二组有物理分数。
这种情况下,应将两组数据调整为相同的列结构,如下图所示。
如上图所示,在第一组数据中添加物理列,在第二组数据中添加化学列,并保证所有列的顺序和含义是相同的,然后复制其中一组的数据行到另一组数据的下方即可,如下图所示。
纵向合并数据的特点主要是列结构要相同,如列的顺序和数据含义相同,否则合并就没有意义;此外,在整理数据时多采用补充的形式完善列的结构,对于确实不需要的数据,也可以通过删除列进行匹配。最后,当多个来源的数据所有列的结构相同后,就可以将数据行复制到一起,并进一步操作。
横向合并数据多用于对行数据的横向扩展,此时需要一个关联数据列,如前面示例的学生信息中,姓名有可能重复,但学号一般不会重复,可以做为关联数据;实际工作中,对于人员信息还可以考虑使用手机号码、身份证号码或者系统内不会重复的数据做记录的唯一标识和关联数据。
如果数据量不大,也可以使用类似纵向合并的方式,采取补充行的形式进行整理后合并;但是,如果数据记录太多,补充行的方法显示是不合适的,不但操作起来非常麻烦而且很容易出错。
下面先来看一个简单的示例,假如有如下图所示的两组数据。
本例的数据量不大,可以很容易看出来,两组数据都是按学号升序排列,第二组数据比第一组数据少了学号250103的记录,此时可以在第二组数据中添加此记录行,然后将所有列复制到第一组数据列的后面,如下图所示。
数据横向合并前,还应对唯一标识数据进行验证,如上图中可以在E2单元格添加公式“=A2=F2”,向下复制公式后可以对比两组数据在同一行的学号是否相同。
可以看到所有行的唯一标识数据,即学号都相同,这样就可以对两组数据进行横向合并了,这里删除E、F、G三列即可,完成后数据如下图,只是学号250103记录中没有英语的分数。
当然,如果一个班有几十人,这种横向合并数据的方式显然是不方便的,还好Excel提供了VLOOKUP()函数。还以下图的两组数据为例,为方便操作,可以将第二组数据复制到第一组数据所在的工作表;应注意,第二组数据中用于标识唯一记录的列应放在第一位,如本例中的“学号”。
接下来,首先在第一组数据添加“英语”分数列,然后选中“英语”列的所有数据单元格,如下图所示。
接下来需要通过数组公式的形式调用VLOOKUP()函数。选中“英语”列所有数据单元格后(如上图所示),直接输入“=VLOOKUP(”,第一个参数是选中关联数据,这里是“学号”,可以通过鼠标拖拽选中A2:A6区域;第二个参数是指定需要查询数据的“表”区域,这里可以选中G、H、I列;第三个参数指定查询“表”区域内与唯一标识数据对应数据的列,如“英语”分数是第3列就设置为3;第四个参数指定是否模糊匹配,这里设置为0或FALSE,即需要精确匹配学号并按学号查找对应的英语分数。基础公式完成后应是“=VLOOKUP(A2:A6,G:I,3,0)”,最后通过键盘Ctrl+Shift+Enter完成输入,此时编辑栏显示的公式是数组公式,即“{=VLOOKUP(A2:A6,G:I,3,0)}”;可以看到,第一组数据中的英语分数已经通过学号关联填充为第二组数据中对应的分数,如下图所示。
此外,如果没有找到关联的数据,则会显示为#N/A错误。如下图所示,第二组中没有学号250103的英语分数,所以在第一组中关联的的英语分数就显示为#N/A。
数据横向合并完成后,可以选中第一组数据中的“英语”列,在原位置复制后只粘贴数值,最后删除第二组数据即可。对于缺失的数据,可以根据实际情况进行核实和完善。
使用合并计算功能可以将多个数据表合并,并进行基本的计算。如下图中的两组数据,第一组有语文和数学分数,第二组有英语、化学和物理分数,但缺少了学号250103的记录。
接下来需要使用合并计算功能将两组数据合并为一个表,首先选中单元格A8,作为存放合并数据的起始位置;然后通过“数据”选项卡>>“数据工具”组>>“合并计算”打开合并计算窗口,如下图所示。
接下来是选中需要合并的数据表区域,需要多次使用上图中标识①和②的位置进行操作。选中一个区域时首先点击位置①的向上箭头按钮,然后可以通过鼠标拖拽选中第一组数据,选择完成后点击位置②的“添加”按钮将区域添加到“所有引用的位置”列表中,本例需要两次选择操作,完成后如下图所示。
接下来分析两组数据的结构,首行是指标名称,可以用来指定合并后的数据列;最左列是唯一标识记录的学号数据,用来关联两个表中的学生信息;它们在数据合并时都是需要参考的信息,所以应同时选中“标签位置”中的“首行”和“最左列”,如下图所示。
最后,点击“确定”按钮完成两组数据的合并,结果如下图所示。
本例在合并计算功能选择的“函数”为“求和”,对于示例中的两组数据来说,其中的分数没有重复的,所以求和不会有问题,但是如果第一组中也包含了英语分数会如何呢,如下图所示。
此时可以有两种处理方式,一是只保留一份英语分数,但存在的问题是我们可能并不知道具体缺少的是哪些记录的英语分数;另一种处理方法就是在合并计算时选择函数为“平均值”,如下图所示。
请注意需要删除原有的引用位置,并重新选中新的数据区域。合并操作结果如下图所示。
最后,您可能也发现了“姓名”数据没有出现合并结果中,因为它不是数值,所以无法计算;但是通过VLOOKUP()函数可以很方便地根据学号从原始数据中提取姓名,最终生成一份完整的合并数据。如我们选中B9到B13的区域,然后输入公式“=VLOOKUP(A9:A13,A1:B6,2,0)”,并使用键盘Ctrl+Shift+Enter组合键确认数组公式,完成后结果如下图所示。
最后,可以将合并数据复制到新的工作表中进一步操作。