如何在 Google 表格中比较两个列表(找出相同项和差异)
Google 表格提供了比较两个列表所需的一切:高亮两边都有的值,标记缺失的值,或者把差异提取成一个会自动更新的独立列表。本文从简单的高亮讲到一次处理整列的公式,介绍最实用的几种方法。
所有示例都假设 列表 A 在 A 列,列表 B 在 B 列,从第 2 行开始,第 1 行是标题。B2:B 这样的开放式范围包含下面的所有行,新增的数据会被自动纳入。
只需要比较一次?把两个列表粘贴到免费的 两个列表比较工具,无需公式就能看到仅在 A、仅在 B 和两者共有的项目。
1. 用条件格式高亮匹配项
- 选中 A2:A。
- 点击 格式 → 条件格式。
- 在 设置格式的条件 中选择 自定义公式,输入:
=COUNTIF($B$2:$B,$A2)>0
- 选择填充颜色,点击 完成。
如果要高亮 A 中在 B 里找不到的值,改用:
=COUNTIF($B$2:$B,$A2)=0
在 B2:B 上再添加一条规则(交换列字母),就能给列表 B 也着色。公式是按范围的第一个单元格($A2)来写的,表格会自动为其他行调整。
2. 用 COUNTIF 或 MATCH 标记每一项
辅助列能给出可以排序和筛选的结果。在 C2 输入:
=IF(COUNTIF($B$2:$B,A2)>0,"匹配","不匹配")
或者用 MATCH,它会返回 TRUE 或 FALSE:
=ISNUMBER(MATCH(A2,$B$2:$B,0))
向下拖动填充公式,然后用 数据 → 创建过滤器,只显示匹配项或差异项。
3. 一个公式检查整列(ARRAYFORMULA)
不用把公式复制到每一行,在 C2 写一个 ARRAYFORMULA 就能填满整列,之后新增的行也会自动覆盖:
=ARRAYFORMULA(IF(A2:A="",,IF(COUNTIF(B2:B,A2:A)>0,"匹配","不匹配")))
IF(A2:A="",,…) 这部分会让空行保持空白,而不是被填上"不匹配"。
4. 把匹配项或差异项提取成新列表(FILTER)
FILTER 返回一个实时列表,任一列表变化时都会自动更新。A 中同样在 B 中的值:
=FILTER(A2:A,A2:A<>"",COUNTIF(B2:B,A2:A)>0)
A 中不在 B 中的值:
=FILTER(A2:A,A2:A<>"",COUNTIF(B2:B,A2:A)=0)
A2:A<>"" 这个条件很重要:没有它,A 列的空行会和 B 列的空行"匹配"上。要去重并排序,用 UNIQUE 和 SORT 包裹结果:
=SORT(UNIQUE(FILTER(A2:A,A2:A<>"",COUNTIF(B2:B,A2:A)=0)))
把公式中的 A 和 B 交换,就能得到仅在列表 B 中的值。
5. 用 XLOOKUP 或 VLOOKUP 查找匹配数据
如果列表 B 还有相关数据——比如 C 列是价格——XLOOKUP 会为每个匹配项返回对应的值:
=XLOOKUP(A2,$B$2:$B,$C$2:$C,"未找到")
VLOOKUP 也可以,最后一个参数一定要设为 FALSE(精确匹配):
=IFERROR(VLOOKUP(A2,$B$2:$C,2,FALSE),"未找到")
6. 逐行比较两列
如果两个列表是对齐的,想知道每一行是否和旁边一致:
=IF(A2=B2,"相同","不同")
= 不区分大小写。要区分大小写,使用 EXACT:
=IF(EXACT(A2,B2),"相同","不同")
要给不同的行着色,选中 A2:B,添加一条自定义公式为 =$A2<>$B2 的条件格式规则。
7. 比较两个不同工作表中的列表
在普通单元格中,可以直接引用另一个工作表:
=IF(COUNTIF(工作表2!$A$2:$A,A2)>0,"匹配","不匹配")
条件格式规则不能直接引用其他工作表,需要用 INDIRECT 包裹范围:
=COUNTIF(INDIRECT("工作表2!A2:A"),$A2)>0
把 工作表2 换成你的工作表名称。如果名称中有空格,要加单引号:INDIRECT("'老客户'!A2:A")。
常见问题及解决方法
- 多余的空格: "Apple " 和 "Apple" 不会匹配。选中数据,使用 数据 → 数据清理 → 修剪空格。
- 同一列表内有重复: 先用 数据 → 数据清理 → 移除重复项,或用
UNIQUE包裹结果。 - 大小写: COUNTIF、MATCH、XLOOKUP 和 VLOOKUP 都不区分大小写。如需区分大小写判断是否存在,使用
=SUMPRODUCT(--EXACT($B$2:$B$100,A2))>0。 - 数字与文本: 数字和以文本形式存储的相同数字不会匹配。用 格式 → 数字 给两列设置相同格式,或用
=VALUE(A2)转换。
总结
| 方法 | 结果 | 适用场景 |
|---|---|---|
| 条件格式(COUNTIF) | 高亮匹配项或差异项 | 快速直观检查 |
| COUNTIF / MATCH 辅助列 | 匹配 / 不匹配标记 | 排序和筛选 |
| ARRAYFORMULA | 整列的标记 | 持续增长的列表 |
| FILTER(+ UNIQUE、SORT) | 匹配项或差异项的实时列表 | 提取结果 |
| XLOOKUP / VLOOKUP | 另一列表中的相关数据 | 需要带出其他列的匹配 |
逐行比较(= / EXACT) |
每行相同 / 不同 | 对齐的两列 |
| 条件格式中使用 INDIRECT | 跨工作表高亮 | 不同标签页中的列表 |
在用 Excel?请看 如何在 Excel 中比较两个列表。如果只想不写公式快速检查一次,可以使用 在线列表比较工具。