如何在Excel中删除重复行并保留指定第N次出现的记录
自定义保留Excel重复组内的指定行(而非首次出现)
针对你需要按分组(如A列的a/b/c)保留组内第N条记录,或查找特定值的需求,提供两种实用方法:
方法一:用Excel公式实现 适合中小数据量
假设原始数据在A:B列(A列是分组键,B列是内容),步骤如下:
为每组生成行序号
在C2单元格输入公式(假设表头在A1/B1):=COUNTIF($A$2:A2, A2)下拉填充到所有数据行,这样同组的行会被标记为
1、2、3...(比如a组的三行对应1、2、3)。提取唯一分组名
复制A列数据到D列,选中D列→点击「数据」选项卡→「删除重复值」,只保留唯一的a、b、c。提取每组指定行的内容
要保留每组第2条记录,在E2输入公式:=IFERROR(INDEX($B:$B, MATCH(1, ($A:$A=D2)*($C:$C=2), 0)), "?")- 如果你用的是Excel 365/2021,直接回车即可;旧版本需要按
Ctrl+Shift+Enter作为数组公式。 - 要保留第3条,把公式里的
2改成3就行;如果要查找特定值(比如Banana),把($C:$C=2)换成($B:$B="Banana")。
下拉填充后,就能得到你要的结果:a对应Banana,b对应Banana,c对应?。
- 如果你用的是Excel 365/2021,直接回车即可;旧版本需要按
方法二:用Power Query实现 适合大量数据,更灵活
Power Query能批量处理数据,步骤如下:
选中原始数据区域→点击「数据」选项卡→「从表格/区域」(Excel 2016及以后可用),进入Power Query编辑器。
按分组键分组
点击「转换」选项卡→「分组依据」,设置:- 分组依据:选择A列
- 新列名:自定义
- 操作:选择「所有行」
点击确定后,每个分组会对应一个包含组内所有行的列表。
添加自定义列提取指定行
点击「添加列」选项卡→「自定义列」,输入公式:= try List.Range([自定义], 1, 1){0}[B] otherwise "?"- 解释:
List.Range([自定义],1,1)取组内第2条记录(Power Query是0索引,1对应第2个元素);{0}[B]提取该记录的B列值;try...otherwise处理组内不足N条的情况,返回?。 - 要取第3条,把
1改成2;要查找特定值(比如Banana),可以把公式换成= try List.Select([自定义], each [B] = "Banana"){0}[B] otherwise "?"。
- 解释:
加载回Excel
删除多余的「自定义」列,点击「主页」选项卡→「关闭并上载」,结果就会导入到新工作表中。
内容的提问来源于stack exchange,提问作者fuadnafiz98
相关产品推荐
相关产品推荐

