按姓名去重并保留最新记录需避免默认“删除重复项”只留首次出现的缺陷,可采用排序+删除重复项、辅助列+MAXIFS筛选、Power Query分组聚合或Excel 365动态数组函数四种方法。

如果您在Excel中需要按姓名去重,但希望保留每组姓名中最新的一条记录(例如依据“录入日期”或“时间戳”列判断新旧),则不能直接使用默认的“删除重复项”功能,因其仅保留首次出现的行。以下是实现按姓名去重并保留最新记录的多种可行方法:
一、排序+删除重复项组合法
该方法通过预先按时间降序排列,使最新记录排在每组姓名的最上方,再执行删除重复项操作,从而确保保留的是最新数据。
1、选中整张数据表(含标题行)。
2、点击【数据】选项卡,选择【升序】或【降序】前先点击任意时间列(如“录入日期”)的任一单元格。
3、再次点击【数据】→【排序】,在排序对话框中设置主要关键字为“录入日期”,次序选择降序,添加条件后点击确定。
4、重新选中数据区域,点击【数据】→【删除重复项】。
5、在弹窗中仅勾选姓名列(取消其他列勾选),确认勾选【数据包含标题】,点击【确定】。
二、辅助列+MAXIFS+筛选法
此方法不修改原始顺序,通过构建逻辑判断每条记录是否为其姓名组内时间最大值,从而精准标记最新记录,适合需保留原结构或后续复用的场景。
1、在空白列(如D列)第一行(D2)输入公式:=IF(C2=MAXIFS(C:C,A:A,A2),1,0)(假设A列为姓名,C列为日期)。
2、将该公式向下填充至全部数据行。
3、选中整表,点击【数据】→【筛选】,对D列启用筛选,只保留值为1的行。
4、复制筛选后的可见行,粘贴为数值至新工作表。
三、Power Query高级去重法
Power Query支持按分组聚合选取特定行,可直接按姓名分组后取每组中日期最大的那一条,全程非破坏性、可刷新、适用于大数据量。
1、选中数据区域,点击【数据】→【从表格/区域】,确认创建表并勾选【表包含标题】,点击【确定】进入Power Query编辑器。
2、在右侧“查询设置”窗格中,右键点击查询名称,选择【重命名】,设为易识别名称(如“姓名去重留新”)。
3、点击【转换】选项卡→【分组依据】,在分组对话框中:分组依据选姓名;新列名填“最新记录”;操作选所有行。
4、点击新生成的“最新记录”列右侧的展开按钮,选择【使用还原行】→勾选除“姓名”外所有字段,取消勾选【使用原始列名作为前缀】。
5、点击【转换】→【排序】,对日期列(如“录入日期”)执行降序排序。
6、点击【转换】→【提取行】→【获取前1行】。
四、UNIQUE+XLOOKUP嵌套数组法(Excel 365 / 2021+)
利用动态数组函数组合,无需手动刷新或进入编辑器,即可实时生成按姓名去重且保留最新记录的结果表,结果随源数据变化自动更新。
1、在空白区域首单元格(如F1)输入以下公式:
=LET(names,UNIQUE(A2:A1000),dates,BYROW(names,LAMBDA(n,MAXIFS(C2:C1000,A2:A1000,n))),HSTACK(names,XLOOKUP(dates,C2:C1000,B2:B1000,"")))
2、按Enter确认,公式将自动溢出生成两列:姓名与对应最新记录的某字段(如B列为“联系电话”,C列为“录入日期”)。
3、如需返回整行数据,可将XLOOKUP部分替换为FILTER配合INDEX,例如:INDEX(FILTER($A$2:$E$1000,$A$2:$A$1000=n),1,0)嵌入相应位置。










