乐于分享
好东西不私藏

Excel 删除重复项前先备份:它不提醒你直接删

Excel 删除重复项前先备份:它不提醒你直接删

先说结论:Excel 的"删除重复项"是一个不给你后悔机会的功能。它不弹确认框问你"确定要删这 300 行吗",它只在删完之后告诉你"发现并删除了 300 个重复值,保留了 1200 个唯一值"。等你看到这句话,数据已经没了。

如果这时候你还没保存,Ctrl+Z 能救回来。但凡你手快按了保存、或者中间又做了几步别的操作把撤销栈冲掉了,那 300 行就真的找不回来了。

它到底按什么标准判定"重复"

这是最容易翻车的地方。很多人以为 Excel 会整行比对,其实不是——它只比对你勾选的那几列

选中数据区域,点数据选项卡里的"删除重复项",会弹出一个列表,里面是你选中区域的所有列名,默认全部勾上。全勾的情况下,只有两行完全一模一样才算重复。

但如果你只勾了"姓名"这一列,那 Excel 就只看姓名。张三出现三次,哪怕这三条记录的部门、金额、日期全都不一样,它也会认定后两条是重复项,直接删掉,只留第一条。

这就是最常见的事故现场:本来想去掉完全一样的脏数据,结果因为少勾了几列,把有效数据当重复删了。

保留的是哪一条

Excel 保留的是从上往下第一次出现的那条,后面的全删。

它不会帮你判断哪条更新、哪条更完整。如果你的表是按时间倒序排的,最新的记录在最上面,那删完留下的是最新数据,正好。如果是正序排的,留下的就是最老的那条——很多人的销售明细表就是这么被削成历史版本的。

所以动手之前先想一下排序方向。要留最新的,就先按日期降序排一遍再删。

三个必须先做的动作

第一,复制一份工作表。 右键工作表标签,选"移动或复制",勾上"建立副本",改个名字叫"原始数据备份"。这一步花五秒钟,能省你半天。

第二,先数一下。 在空白单元格里写 =COUNTA(A2:A5000) 看当前有多少行,删完再数一次,心里有个数。如果删掉的数量远超预期,立刻撤销。

第三,先用条件格式看一眼。 选中要查重的列,开始选项卡 → 条件格式 → 突出显示单元格规则 → 重复值,重复的会标成浅红色。滚一遍看看标红的到底是不是你想删的那些,确认了再删。

这三步加起来不到一分钟,但性质完全不一样:删除重复项从"闭眼开枪"变成了"瞄准了再开"。

更稳的做法:不删,只标记

如果这份数据你不完全有把握,其实可以不删。加一列辅助列,用公式把重复的标出来,然后筛选出来人工过一遍。

在辅助列写:

=IF(COUNTIF($A$2:A2,A2)>1,"重复","")

注意 $A$2:A2 这个写法,前面锁死后面不锁,往下拉的时候统计范围会逐行扩大。这个公式的意思是"从第一行数到当前行,这个值出现过几次",超过一次就是重复。

这样第一次出现的标空,后面出现的标"重复",逻辑和删除重复项完全一致,但数据还在。筛选出"重复"那些,看一眼再决定删不删。

如果要按多列组合判重,把几列拼起来就行:

=IF(COUNTIFS($A$2:A2,A2,$B$2:B2,B2)>1,"重复","")

姓名和日期都一样才算重复,这就精确多了。

一个特别隐蔽的坑:看着一样其实不一样

有时候你明明看到两行长得一模一样,删除重复项却不认。九成是这三种情况之一:

尾部有空格。 "张三" 和 "张三 " 在 Excel 眼里是两个值。用 =TRIM(A2) 清一遍,或者查找替换把空格全删掉。

数字和文本混了。 单元格左上角有绿色小三角的那种,是被存成文本的数字。它和真正的数字 12345 不相等。选中列 → 数据 → 分列 → 直接点完成,能强制转回数字。

大小写。 这个反过来——删除重复项不区分大小写,"ABC" 和 "abc" 会被判定为重复。如果你的数据是产品编码或者密钥这种大小写敏感的,用它就危险了,得改用公式判重。

删完之后

删除重复项会把下面的行往上挪,也就是说行号会变。如果你的表旁边还有别的公式引用了固定行号,删完之后引用关系可能就错位了。

另外它不会动格式,只删内容和行。所以如果你之前用颜色标记过某些行,删完之后颜色可能跟到了别的数据上,看着就乱了。删完顺手清一下格式:开始 → 清除 → 清除格式。

最后提一句,删除重复项作用于当前选中的连续区域。如果你只选了一个单元格就点这个功能,Excel 会自动扩展到整个数据区域,一般没问题。但如果你的表中间有整行空行,它可能只识别到空行为止的那一段。动手前按 Ctrl+A 看一下高亮范围对不对。

最后

删除重复项本身是个好功能,快、准、不用写公式。它唯一的问题是太安静了——不提醒、不确认、不留痕。

养成一个习惯就够了:动这个功能之前,先复制一份工作表。这不是谨慎,这是常识。

你们表里最容易出重复的是哪种数据?是人工录入的姓名,还是系统导出的流水号?