我们经常遇到Eexcel数据重复的问题,需要解决,但能找到的教程都很零散,往往只提供了一种方法解决了某一类重复问题。
但是Excel数据重复问题,看似简单,但是深究起来,有很多值得思考和挖掘的细节。在这篇文章中,我试图梳理出所有我们会遇到的Excel数据重复问题,并给出多种解决办法。
01Excel重复数据如何界定?
要解决Excel重复数据问题,第一步是界定如何界定数据是否重复?或者说,我们依据什么来判断数据是否重复?
我能想到的有三种数据重复的情况:
- 【单字段重复】:判断某个关键字段是否重复,如姓名是否重复、手机号是否重复、邮箱是否重复等;
- 【多字段重复】:需要综合若干个字段才能判定重复,比如单单通过姓名列是无法判定重复的,因为可能有同名同姓的,所以需要姓名再加上手机号或邮箱来判定是否重复;
- 【全字段重复】。比如,我们需要判定两条记录在所有字段上是否完全一模一样。
而根据重复值可能出现的地方,又可以分为两种情况:
- 重复值出现在同一张表(即同一个sheet或同一个table)中,为叙述方便,简称为【单表重复】;
- 重复值出现在不同表(这些表可能在同一个sheet的不同tables或regions中,也可能在不同的sheets中,乃至在不同的文件中,处理思路都是一样的,因此不单列)中,为叙述方便,简称为【多表重复】。
02寻找到重复数据后如何处理?
当我们找到重复数据(无论属于前面所列举的哪种情况)后,我们通常需要做如下处理:
- 标记。将找到的重复值以醒目的方式标识出来,如用颜色标记,如用公式结果显示匹配结果。
- 删除与保留。可能是删除重复值,保留唯一值;或者删除唯一值,保留重复值。
- 提取。将匹配结果提取到新的表格。
下面一一梳理重复数据处理在Excel中的具体操作步骤。
03用Excel的条件格式标记非重复值(唯一值)
如果属于【单字段重复】情况,只需要选择该字段,然后选择条件格式-突出显示单元格规则-重复值
这时会弹出下面的窗口:
左边下拉框可选择是标记重复值呢还是标记唯一值;右边下拉框则可选择要应用的格式,如果选择了自定义,则会弹出详细的格式设置框,可以进行更细致的格式(数字、字体、边框和填充效果)设置:
标记后效果如下(我用了默认填充效果标记重复值):
如果属于【多字段重复】或【全字段重复】,则标记之前需要有额外动作:新增一个辅助列,连接作为判断重复依据的列字段,然后在该辅助列上应用条件格式:
如上图所示,我需要通过【姓名】、【性别】和【姓名拼音】三个字段连接之后才能判定是否重复,因此我增加了一个辅助列【判断是否重复】,然后用公式连接那三个字段,再在辅助列上应用条件格式进行标记。可以看到两个陈婷虽然姓名和性别一样,但是邮箱不一样,最后结果是这两条记录作为两条不同的记录体现出来(无填充色)。
Excel条件格式无法删除唯一值并保留重复值,只能先标识出重复值,然后通过颜色筛选来保留重复值:
如果要提取重复值或唯一值,需要通过筛选后手动将重复值或唯一值提取到新的表格。
04通过Excel【数据】选项卡上的【删除重复值】命令删除重复值
这里还是要区分是属于【单字段重复】/【多字段重复】/【全字段重复】中的哪一种。
如果属于【单字段重复】,只需要选定作为判断依据的列,然后点击【删除重复值】按钮,并在弹出窗口中选择【以当前选定区域排序】:
如果属于【多字段重复】/【全字段重复】,则可以选中任意一列后,点击【删除重复值】按钮,在弹出窗口中选择【扩展选定区域】:
这时Excel会弹出区域选择窗口,如果是【多字段重复】的情况,那么选择作为判定依据的列,然后确定;如果是【全字段重复】,则全选所有列之后点击确定。
直接用Excel的【删除重复值】命令,只能删除重复值,不能标记重复值(唯一值),也不能提取重复值,但是能保留唯一值。
05vlookup函数查找重复值
vlookup函数估计是Excel中使用率最高的函数之一。其基本形式是:
=VLOOKUP (lookup_value, table_array, col_index_num, [range_lookup])
参数说明见下表:
Vlookup函数的使用需注意以下关键点:
- 要查找的值,也被称为查阅值。我见过很多人忘记写查找的值。
- 查阅值所在的区域。 请记住,查阅值应该始终位于所在区域的第一列,这样 VLOOKUP 才能正常工作。 例如,如果查阅值位于单元格 C2 内,那么您的区域应该以 C 开头。这个查阅值所在的区域可以在任意位置:同一个sheet的不同区域或不同tables,或者在不同sheet上,或者在不同的文件上都可以的。区别只在于引用不同对象的语法不同。实际应用中记不住没关系,输入公式时可以鼠标去选定查阅值所在的区域或table或sheet或文件路径(需要你打开该文件)。
- 区域中包含返回值的列号。 例如,如果指定 B2: D11 作为区域,则应将 B 作为第一列,将 C 作为第二列进行计数,依此类推。
- (可选)如果需要返回值的近似匹配,可以指定 TRUE;如果需要返回值的精确匹配,则指定 FALSE。 如果没有指定任何内容,默认值将始终为 TRUE 或近似匹配。虽然是可选,但是我还是建议指定,毕竟绝大多数时候我们要查找的是精确值。并且这个值有点违背我们的直觉——查找精确值是FALSE而模糊匹配是TRUE。
有时候我们会到要查找的值在需要查找区域的左侧,这时可以采取下面类似的办法:
=VLOOKUP(D2,IF({1,0},D2:D28,B2:B28),2,0))
公式中的1和0不是实际意义上的数字,而是1相关于TRUE,0相当于FALSE,当为1时,它会返回IF的第一个参数(D列),为0时返回第二个参数(B列)。根据数组运算返回数组,所以使用IF后的结果返回一个数组(非单元格区域):该数组由姓名列和姓名拼音列的值成对组成。
一、标记重复值或唯一值
vlookup查找结果即对重复值(匹配成功)或唯一值(匹配失败)进行了标记。
二、删除和提取重复值(唯一值)
对vlookup查找结果进行筛选后,即可删除重复值(唯一值),或将筛选结果复制到新的表格中。
06PowerBI处理重复值,节省海量时间
如果查找重复值的操作只需要做一次,那么我建议用前面的几种方法就行了。
如果你日常工作中总是涉及查找重复数据并进行相应处理,那么,我建议用PowerBI来帮你节省海量时间。用我的口头禅就是——辛苦一次,幸福一生。
为什么这么说呢?因为不论你查找和处理重复值的步骤有多复杂,数据量有多大(几百万上千万乃至更大的数据应该轮不到我们用Excel来处理),只要建立好PowerBI数据模型后:你每次更新要做的要么只是打开模型文件刷新一下(PowerQuery),耗时几分钟;要么PowerBI以固定频率自动刷新结果(需要PowerBI账号且结果不会自动添加到Excel中),零耗时。
假设:
你是总公司的一名小员工,你的任务是每天接收下面单位发上来的报名表。
但是呢,下面单位的人做事不动脑筋,每天都给你发一个客户报名表上来。
这些表吧,有时候是包括该单位全部的报名信息,有时候又是只有新增的;而且有可能一个文件里边的多个sheets里边都有报名信息;这些Excel文件名称又是千奇百怪;最可气的是,让他们早上提交,他们有的非要快下班了才提交;唯一值得欣慰的是这些表格的字段都是一样的。
你现在需要从提交上来的N个表格中,剔除重复报名信息,形成一个完整的不重复的报名表。然后,你每天要在下班前把完整报名表给上级看。
很简单的一项工作,但是你用前面的方法做,我百分之一百肯定你每天都要加班——因为每天都有人17:55才把表发给你,而你18:00就要把报名表给上级看。
来看用PowerBI怎么把这个无聊工作缩短到5分钟乃至0分钟之内。
- 首先,新建一个Excel,名字叫《报名表汇总》;
- 引入来自于文件夹的源,找到“报名表”这个文件夹;
3.找到目标文件夹——“报名表”:
4.然后我们不要PowerQuery自作聪明地帮我们合并这些表啊sheets之类,我们自己操作,点击【转换数据】,:
5.这时就进入查询界面了:
6.我们删除不必要的列,只保留【Content】列,因为数据都在这里边。然后新增一列,调用Excel.Workbook()函数,从Binary中获取数据:
7.然后我们删除【Content】列,保留【自定义】列了,因为数据被我们提取到【自定义】列。点击该列右上角的展开图标,只保留其中的【Data】列(因为表格在这里面):
8.展开【Data】列之后,我们要做个小动作,就是把每一个表格的第一行都作为标题。这一步不是必须,可以将来再做,但是先做这一步可以节省一些步骤和时间,何乐而不为呢。调用Table.TransformColumns()函数和Table.PromoteHeaders()函数提升了表格标题后,就可以点击【Data】列旁边的展开符号,勾选全部三列,进行展开操作了:
9.展开后是下面这样子,这时我们已经汇总了下面单位提交上来的所有报名信息了:
10.接下来我们要去重。这里属于【全字段重复】,因此我们选中所有列(可以ctrl+a快捷键,也可以选中第一列,然后按住shift的同时点击最后一列),然后点击菜单栏的【删除行】下拉菜单里的【删除重复项】:
11.去重后我们发现还有null行,筛选剔除就行了。这样我们就得到了我们需要的下面所有单位的所有报名表了,且不再有重复:
12.最后一步,加载到Excel表格:
最后的结果:
13.高潮来了:假设在17:55,最后一家单位才把表格提交过来,比如叫《报名表3》,而你已经把其他单位的都处理好、得到一张报名表了,这时你要怎么办?一边哭爹叫娘一边重来一遍12个步骤么?NO!你要做的是,把这个《报名表3》丢到你之前建立好的《报名表》文件夹:
然后打开你刚才创建的《报名表汇总》Excel文件,点击【数据】标签,点击【全部刷新】按钮,三十秒后,奇迹发生了,你更新了接近2600条报名信息!看来那个最后交的家伙是故意坑你。但你只用了三十秒就处理完了,离18:00还有3分半!
那如果你连这三十秒的懒都想偷的话,那你需要等待下一篇文章。因为这篇文章实在太长了……
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。