需求:对比两列数据找出重复值并生成对应列(含特殊符号校验)
两列数据重复值提取方案(支持特殊符号)
Excel 实现方法
适用于Excel 365/2021(动态数组版本)
在结果列的第一个单元格(如C1)输入以下公式,公式会自动溢出填充所有重复值:
=UNIQUE(FILTER(A:A, COUNTIF(B:B, A:A)>0))
- 公式说明:
COUNTIF(B:B, A:A):逐一校验A列每个值在B列中的出现次数,支持所有特殊符号的精确匹配FILTER(A:A, ...>0):筛选出A列中在B列存在的所有值UNIQUE(...):自动去除重复结果,避免同一值多次显示
适用于旧版Excel(无动态数组)
在C1输入以下数组公式(输入完成后按Ctrl+Shift+Enter触发),然后下拉填充直到出现空白:
=IFERROR(INDEX(A:A, SMALL(IF(COUNTIF(B:B, A:A)>0, ROW(A:A), ""), ROWS($C$1:C1))), "")
- 公式说明:
IF(COUNTIF(B:B, A:A)>0, ROW(A:A), ""):标记A列中在B列存在的值的行号SMALL(..., ROWS($C$1:C1)):按顺序提取符合条件的行号INDEX(A:A, ...):根据行号提取对应的值,IFERROR用于隐藏无结果时的错误提示
Google Sheets 实现方法
在结果列第一个单元格输入以下公式,自动溢出所有重复值:
=UNIQUE(FILTER(A:A, COUNTIF(B:B, A:A)>0))
该公式逻辑与Excel动态数组版本一致,完全支持特殊符号的精确匹配。
注意事项
- 确保两列数据格式统一:若存在文本/数值格式差异(如A列是文本型数字、B列是数值型),可将
COUNTIF中的匹配值转为文本格式,例如COUNTIF(B:B, TEXT(A:A, "@")) - 如果需要提取两列所有重复值(包含A和B列各自的重复项),可将公式改为
=UNIQUE(FILTER({A:A;B:B}, COUNTIF(A:A, {A:A;B:B})>0*COUNTIF(B:B, {A:A;B:B})>0))
内容的提问来源于stack exchange,提问作者Marta Aleksandra
相关产品推荐
相关产品推荐

