一开始,我也以为这功能简单得像一加一
说实话,Excel里“删除重复值”这个按钮,我少说也点过几百次了吧?但每次点下去,心里还是会咯噔一下。你可能会觉得——就删个重复嘛,至于么。至于!因为踩过的坑,太惨痛了。
哪些列该勾?这其实是个灵魂拷问
后来我学乖了,每次删除前,必做两步: ✅ 先看数据有没有唯一标识符,比如订单号、流水号。如果有,只勾那一列就够了,因为其他列理论上都是“附属信息”,重复的订单号才叫真重复。 ✅ 如果没唯一ID,那就得把所有你想用来判断“两条记录算不算同一条”的列都勾上。比如我要看“同一天、同一个客户、买了同一个产品”的记录,那就把日期、客户名、产品名三列全勾。 这里有个魔鬼细节。有一次同事拿来一张表,希望去掉重复的项目名称,但保留一条。她勾了“项目名称”和“负责人”,以为这样就能保留有负责人的那条。结果呢?Excel会按勾选的列组合来判断重复,如果两条记录项目名称相同、负责人不同,那它俩不算重复,全部留下。她想的是“项目名称唯一,保留负责人不为空的那条”,Excel可不懂你这心思。 所以——别指望它的智能,它只会机械匹配。真想实现那种“条件去重”,得用排序加辅助列,或者干脆上Power Query。
另一个隐藏Boss:看不见的空格和不可见字符

去重后想恢复?呵呵,没有后悔药
这可能是最扎心的部分。删除重复值是不可逆的。 不像筛选,你可以随时取消。一旦你点了确定,再Ctrl+Z,有时候是撤销不了的,尤其如果中间保存过。 我现在的习惯:动手前先复制工作表,在副本上搞。或者至少先另存为一下。这真不是怂,是血的教训。有一次我把整个价格表去重,结果把历史上有效的价格区间全删了,因为日期不同但其他列相同的全没了。后来我花了整整一个下午从邮件附件里扒拉备份…… 所以,💡强烈建议:去重前,先按某个字段排序,确保保留下来的那条是你想要的。 比如按日期降序排,再去重,这样留下的就是最新的记录。默认Excel保留第一次出现的行,而排序能决定哪条是“第一次”。超大表格的去重:卡死你算轻的
现在我经常处理几十万行数据,常规的“删除重复值”点下去,整个Excel可能直接没响应。这时候就得用更巧的办法。 第一个方案:用UNIQUE函数(如果你是Microsoft 365)。这个函数直接返回去重后的数组,不会破坏原数据,而且效率奇高。比如=UNIQUE(A1:C10000),瞬间出结果。 第二个方案:数据透视表。把你想去重的字段拖到行标签,透视表本身就会自动去重。再用GETPIVOTDATA或其他方式引用结果,非常爽。 第三个方案:Power Query。只要点几下,删除重复项,然后加载到工作表。Power Query处理几百万行都轻松,而且步骤可以重复用,下次刷新就行。 对了,说到透视表,去重计数也是个常见需求。数据透视表里默认的计数是包括重复项的,要想统计不重复的个数,一定记得勾选“将此数据添加到数据模型”,然后值字段设置里选“非重复计数”。这个功能2013版之后才有,但很多人不知道。
我问答网