如何在Google Sheets中找出匹配Student ID但其他列有差异的行
解决Google Sheets中匹配ID但列值不同的行筛选问题
核心思路
通过唯一标识(Student ID)匹配两张表数据,再对比除ID外的所有列是否存在差异,最终筛选出存在差异的注册表行并输出到目标工作表。
函数实现方案
假设:
- 注册表(SIS表)数据位于
SIS!A:Z(A列为Student ID,B:Z为其他数据列) - 目录表(Directory表)数据位于
Directory!A:Z
在“Accounts to Edit”工作表的A1单元格输入以下公式:
=FILTER(SIS!A:Z, COUNTIF(Directory!A:A, SIS!A:A), ARRAYFORMULA(MMULT(--(SIS!B:Z<>VLOOKUP(SIS!A:A, Directory!A:Z, COLUMN(B:Z)-COLUMN(A:A)+1, FALSE)), SEQUENCE(COLUMNS(SIS!B:Z), 1, 1, 0))>0) )
公式拆解
COUNTIF(Directory!A:A, SIS!A:A):筛选出注册表中Student ID在目录表中存在的行ARRAYFORMULA(MMULT(...))>0:SIS!B:Z<>VLOOKUP(...):对比注册表和目录表中对应ID的每一列值,返回布尔值(不同为TRUE,相同为FALSE)--(...):将布尔值转换为1/0MMULT(..., SEQUENCE(...)):对每行的1/0求和,只要有一列不同,总和就大于0- 最终筛选出总和大于0的行(即存在列值差异的行)
注意事项
- 确保两张表的列顺序完全一致,否则VLOOKUP的列索引会出错
- 如果表中有空值,
<>会将空值与非空值判定为不同,符合业务逻辑;若需忽略空值差异,可添加IFERROR或额外判断 - 若数据量较大,可限制列范围(如
B:D而非B:Z)提升公式运行效率
内容的提问来源于stack exchange,提问作者Chris Hoebeke
相关产品推荐
相关产品推荐

