
本文于2023年6月21日首发于本人同名公众号:Excel活学活用,更多文章案例请搜索关注!
☆本期内容概要☆
工作表重复记录处理
大家好,我是冷水泡茶,大家在EXCEL中是不是经常碰到重复值处理的问题?我们前期也分享过(Excel 功能/公式函数/VBA/多种姿势处理重复值,What’s your favorite?)。
今天在网上看到有人求助要把“身份证号码”重复的记录删除掉,但还有一个条件,还有另外一列“日期”也必须相同的才算是重复。

实现起来应该不难,就在最近我们的“电子发票登记管理系统(EXCEL版)"也加入了查重的功能。
似乎没有什么新鲜内容可分享的了。不过,仔细一想,我觉得还是有点文章可做的:能不能做一个通用的、“万能”的重复值处理模板?不局限于身份证号码,不局限于两个字段,随便多少字段都行?琢磨了一下午,来看看成果:
我们一起来看一下制作思路吧:
1、重复值标色:
(1)我们用一个用户窗体,把表头字段作为复选框控件列出来,供选择,成为我们判断重复值的标准,并把选择的对应列号装入数组arrkey()。
(2)把“明细表”数据装入数据arr(),判断表头有没有字段“是否重复”,没有则添加,并记下该字段的列号markCol,后面据以写入重复值信息。
(3)然后两层循环数组,通过循环arrkey()生成比较的关键字key1,key2,比较两者是否相等,相等则把行号加入pickedRows,表示该行是重复的记录。并根据重复的次数标上不同的颜色,并把重复信息写在“是否重复”单元格里。
2、重复值删除:代码逻辑与重复值标色差不多,重点是记下重复值的行号pickedRows,然后从最大行号开始向前循环,把行号在pickedRows里的记录先复制到“重复”表里(如果没有“重复”表,则自动创建),再把重复的记录删除。
代码我放在第二条文章,感兴趣的朋友可以参考。
好,今天就到这吧。欢迎点赞、留言、分享,谢谢大家,我们下期再会。
☆往期合集☆【2023年3月】【2023年4月】