记录清单比对的常用技巧
经常被人问到怎么对两份数据进行比对,提问的往往都很笼统,其实比对有很多不同的情况,一两句话很难说清楚,所以还是写些详细的文字来说明吧。
在工作中,有时候会需要对两份内容相近的数据记录清单进行比对,需求不同,比对的的目标和要求也会有所不同。下面根据几个常见的不同场景介绍一下Excel当中清单比对查找的技巧。
场景1,比对取出两表的交集(相同部分)
Sheet1中包含了一份数据清单A,sheet2中包含了一份数据清单B,要取得两份清单共有的数据记录(交集),也就是要找到两份清单中的相同部分。
方法1:高级筛选
高级筛选是处理重复数据的利器。
选中第一份数据清单所在的数据区域,在功能区上依次单击【数据】——【高级】(2003版本中菜单操作为【数据】——【筛选】——【高级筛选】),出现【高级筛选】对话框。
在对话框中,筛选【方式】可以根据需求选取,例如这里选择“将筛选结果复制到其他位置”;【列表区域】就是之前所选中的第一份数据清单A所在的单元格区域;【条件区域】则选取另外那份清单B所在的单元格区域。如下图所示:
点击【确定】按钮后,就可以直接得到两份清单的交集部分,效果如下图。其中两个清单中虽然都有【西瓜】和【菠萝】,但是由于数量不一致,所以没有作为相同记录被提取出来。
这个操作的原理,就是利用了高级筛选功能对于匹配指定条件的记录进行筛选的功能,把两张表中的任意一张作为条件区域,在另外一张表中就能筛选出与之相匹配的记录,忽略掉其他不相关的记录。
需要注意的是,使用高级筛选的时候务必注意两个清单的标题行要保持一致(高级筛选中作为条件区域的前提),并且在选取【列表区域】和【条件区域】的时候都要把标题行的范围包含在其中。
方法2:公式法
使用公式进行比对的方法有很多,如果是单列数据对比比较常用的函数是COUNTIF,如果是多列数据记录对比,SUMPRODUCT函数比较胜任。
在其中一张清单的旁边输入公式:
=SUMPRODUCT((A2&B2=Sheet2!A$2:A$13&Sheet2!B$2:B$13)*1)
并向下复制填充。其中的Sheet2!A$1:A$13
和Sheet2!B$2:B$13
是另一张清单中的两列数据区域,需要根据实际情况修改。公式结果等于1的记录就是两个清单的交集部分,如下图所示:
场景2,取出两表的差异记录
要在某一张表里取出与另一张表的差异记录,就是未在另外那张清单里面出现的部分,其原理和操作都和上面第一种场景的差不多,所不同的只是筛选后所选取的集合正好互补。
方法1:高级筛选
先将两个清单的标题行更改使之保持一致,然后选中第一份数据清单所在的数据区域,在功能区上依次单击【数据】——【高级】,出现【高级筛选】对话框。在对话框中,筛选方式选择“在原有区域显示筛选结果”;【列表区域】和【条件区域】的选取和前面场景1完全相同,如下图所示:
点击【确定】完成筛选,将筛选出来的记录全部选中按【Del】键删除(或做标记),然后点击【清除】按钮(2003版本中为【全部显示】按钮)就可以恢复筛选前的状态得到最终的结果,如下图所示:
方法2,公式法
使用公式的话,方法和场景1完全相同,只是最后需要提取的是公式结果等于0的记录。
场景3,取出关键字相同但数据有差异的记录
前面的两份清单中,【西瓜】和【菠萝】的货品名称虽然一致,但在两张表上的数量却不相同,在一些数据核对的场景下,就需要把这样的记录提取出来。
方法1:高级筛选
高级筛选当中可以使用特殊的公式,使得高级筛选的功能更加强大。
第一张清单所在的sheet里面,把D1单元格留空,在D2单元格内输入公式:
=VLOOKUP(A2,Sheet2!$A$2:$B$13,2,0)<>B2
然后在功能区上依次单击【数据】——【高级】,出现【高级筛选】对话框。在对话框中,筛选方式选择“在原有区域显示筛选结果”;【列表区域】选取第一张清单中的完整数据区域,【条件区域】则选取刚刚特别设计过的D1:D2单元格区域,如下图所示:
点击【确定】按钮以后,就可以得到筛选结果,就是第一张中货品名称与第二张表相同但数量却不一致的记录清单,如下图所示:
同样的,照此方法在第二张清单当中操作,也可以在第二张清单中找到其中与第一张清单数据有差异的记录。
这个方法是利用了高级筛选中可以通过自定义公式来添加筛选条件的功能,有关高级筛选中使用公式作为条件区域的用法,可参考下面这篇博文:
方法2:公式法
使用公式还是可以利用前面用到的SUMPRODUCT函数,在其中一张清单的旁边输入公式:
=SUMPRODUCT((A2=Sheet2!A$2:A$13)*(B2<>Sheet2!B$2:B$13))
并向下复制填充。公式中的包含了两个条件,第一个条件是A列数据相同,第二个条件是B列数据不相同。公式结果等于1的记录就是两个清单中数据有差异的记录,如下图所示。这个例子中也可以使用更为人熟知的VLOOKUP函数来进行匹配查询,但是VLOOKUP只适合单列数据的匹配,如果目标清单中包含了更多字段数据的差异对比,还是SUMPRODUCT函数的扩展性更强一些。
一条评论
高级筛选法 中
=VLOOKUP(A2,Sheet2!$A$2:$B$13,2,0)B2
取出两表的差异记录
其实也可
改为
=VLOOKUP(A2,Sheet2!$A$2:$B$13,2,0)=B2
取两表 相同的 部分!