如何通过query函数或数组公式按B列重复值筛选所有对应重复行
操作方案(适用于Google Sheets)
以下提供两种实现方式,默认原始数据存放在A:B列、第1行为表头:
方案1:FILTER + COUNTIF 数组公式(更简洁)
直接在空白单元格输入以下公式即可输出符合要求的结果:
=FILTER(UNIQUE(A2:B), COUNTIF(INDEX(UNIQUE(A2:B),,2), INDEX(UNIQUE(A2:B),,2))>1)
- 逻辑说明:
UNIQUE(A2:B)先对A、B列的行组合去重,确保输出的A列记录唯一,避免同一标题对应同一URL的重复行出现INDEX(UNIQUE(A2:B),,2)提取去重后结果的B列内容,用于统计重复次数COUNTIF(判断条件)>1仅保留B列出现次数大于1的行,也就是所有B列存在重复的记录
如果不需要强制A列记录唯一,去掉公式里的UNIQUE即可,简化为:
=FILTER(A2:B, COUNTIF(B2:B, B2:B)>1)
方案2:QUERY 函数实现
偏好QUERY语法可以使用以下公式:
=QUERY(UNIQUE(A2:B), "SELECT Col1,Col2 WHERE Col2 IN (SELECT Col2 FROM (SELECT Col2,COUNT(Col2) AS cnt FROM UNIQUE(A2:B) GROUP BY Col2 HAVING cnt>1))", 0)
- 逻辑说明:
- 内层先对去重后的数据按B列分组,筛选出所有出现次数大于1的B值集合
- 外层查询去重后的全量行,仅保留B值属于上述重复集合的记录
内容的提问来源于stack exchange,提问作者MegaMikeJr
相关产品推荐
相关产品推荐

