Excel技巧 | 高效查重:一键列出所有重复项的位置,告别逐个核对!
在数据处理(如名单核对、资产盘点、考勤统计)中,我们常遇到一个棘手问题:如何快速定位某一值的所有重复位置,并清晰地罗列出来?
传统的 “条件格式” 只能标记颜色,COUNTIF 只能判断是否重复。若想在单元格里直接显罗列所有重复项的位置,旧方法往往力不从心。
今天,就为大家分享一个公式!
假设我们有一份数据区域(如 B3:B17),我们需要对每一行的内容进行判断:
- 如果不重复:单元格留空。
- 如果重复:在旁边显示文字,说明它与第几行的内容重复。
- 多重复处理:如果一个值出现多次(如 3 次),要把第 2、第 3 次出现的位置全部列出来,用符号分隔。
最终效果如下图:

核心公式:
=TEXTJOIN("、",TRUE,FILTER($B$2:$B$16,($C$2:$C$16=C2)*($B$2:$B$16<>B2),""))
1. 公式拆解:
第一步:精准筛选 (FILTER)
这是实现 “罗列所有” 的核心引擎。
=FILTER($B$2:$B$16,($C$2:$C$16=C2)*($B$2:$B$16<>B2),””)
- 范围:
$B$2:$B$16是我们要查找的数据序号。 - 条件:
($C$2:$C$16=C2)*($B$2:$B$16<>B2) - 这是一个多条件交叉验证。
$C$2:$C$16=C2:筛选出所有重复的数据。$B$2:$B$16<>B2:排除当前行自己,只找别人。- 缺省值:
""当没有找到时返回空值。
第二步:合并多结果 (TEXTJOIN)
FILTER 筛出来的是一个数组列表。如果直接显示会溢出报错,所以我们需要合并。
= TEXTJOIN(“、”, TRUE, 上一步的数组)
"、":指定多个结果之间用顿号连接。TRUE:忽略空单元格。- 效果:把
{2, 6}变成"2、6"。
第三步:逻辑判断 (IF 隐含逻辑)
虽然公式里没写 IF,但实际上 FILTER 筛选不到数据时(即不重复时),返回的是空值。配合 TEXTJOIN,最终结果就是空白,完美符合 “不重复留空” 的需求。

夜雨聆风