乐于分享
好东西不私藏

Excel技巧 | 高效查重:一键列出所有重复项的位置,告别逐个核对!

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,最终结果就是空白,完美符合 “不重复留空” 的需求。