Excel:基于三列识别重复项并保留最早日期记录求助
保留最早日期的唯一记录解决方案
需求说明
需筛选出CustomerName、ZipCode和DOB完全一致的重复记录,仅保留其中Date最早的条目。比如示例表格里,第二条John Smith的记录日期更晚,需要移除。此前尝试用MAXIFS()函数效果不理想。
示例数据
| TransID | Date | CustomerName | ZipCode | DOB | |
|---|---|---|---|---|---|
| 5X42 | 04/13/18 | John Smith | 90210 | 11/23/87 | johnsmith@gmail.com |
| 7YC5 | 01/27/21 | John Smith | 90210 | 11/23/87 | johnsmith@gmail.com |
| 28N2 | 11/17/20 | Mary Jones | 56451 | 05/16/91 | maryjones@gmail.com |
可行解决方法
方法1:Power Query(高效推荐)
- 选中数据区域,点击「数据」选项卡→「从表格/区域」,将数据导入Power Query编辑器。
- 选中
CustomerName、ZipCode、DOB三列,右键点击→「分组依据」。 - 分组设置:
- 新列名:自定义为「最早日期记录」
- 操作:选择「所有行」
- 分组依据:保持选中的三列不变
- 添加自定义列,输入公式:
Table.SelectRows([最早日期记录], each [Date] = List.Min([最早日期记录][Date])) - 展开自定义列的所有字段,删除多余分组列,最后点击「关闭并上载」,即可得到仅保留最早日期的唯一记录。
方法2:辅助列+筛选
- 在数据右侧插入辅助列,输入公式:
该公式会返回当前行对应的=MINIFS(B:B,C:C,C2,D:D,D2,E:E,E2)CustomerName、ZipCode、DOB组合下的最小日期。 - 筛选辅助列值等于对应
Date列值的行,这些就是需要保留的最早日期记录,复制到新区域即可。
方法3:排序+高级筛选
- 先按
CustomerName、ZipCode、DOB排序,再按Date升序排序。 - 点击「数据」选项卡→「高级」筛选,选择「将筛选结果复制到其他位置」。
- 设置列表区域为数据范围,条件区域留空,勾选「选择不重复的记录」,指定复制位置后确认即可(排序后高级筛选会保留每组的第一条,即日期最早的记录)。
内容的提问来源于stack exchange,提问作者Matthew L
相关产品推荐
相关产品推荐

