如何在Google Sheets中基于唯一ID和物品类型对比两个多行列的人员列表
如何在Google Sheets中基于唯一ID和物品类型对比两个多行列的人员列表
嗨,我完全懂你的需求啦——你要在Google Sheets里,针对每个带唯一供应商ID的人员,匹配他们对应的物品类型,然后对比「预期数量」和「实际售出数量」,自动生成“WENT OVER?”列的结果,而且不想用脚本对吧?这事儿完全可以用函数搞定,我给你分步讲清楚:
核心思路
我们需要双重条件匹配:同时用「供应商ID(VENDOR ID #)」和「物品类型」(预期表的ITEMS EXPECTED、售出表的ITEMS SOLD)作为匹配依据,找到对应人员对应物品的预期数量,再和售出数量做对比。
方法1:用XLOOKUP(最直观)
假设你的预期数据存在Sheet1(列A-F:NAME到AMOUNT EXPECTED),售出数据存在Sheet2(列A-G:NAME到WENT OVER?),在Sheet2的第一个“WENT OVER?”单元格(比如G2)输入下面的公式:
=LET( expected_amount, XLOOKUP(B2&E2, Sheet1!$B:$B&Sheet1!$E:$E, Sheet1!$F:$F, "No match"), IF(expected_amount="No match", "Missing expected item", IF(F2=expected_amount, "OK!", IF(F2>expected_amount, "+"&(F2-expected_amount), (F2-expected_amount)) ) ) )
公式解释:
LET函数帮我们给匹配到的预期数量起个变量名expected_amount,让公式更易读;XLOOKUP(B2&E2, Sheet1!$B:$B&Sheet1!$E:$E, Sheet1!$F:$F, "No match"):把当前行的供应商ID(B2)和物品类型(E2)拼接成唯一关键词,去Sheet1里找相同的关键词组合,返回对应的预期数量;如果找不到匹配,就显示No match;- 后续的
IF嵌套逻辑:- 找不到匹配时,说明这个售出物品不在预期列表里,显示
Missing expected item; - 售出数量等于预期时,显示
OK!; - 售出数量多于预期时,显示带
+的差值;少于预期时,直接显示负差值。
- 找不到匹配时,说明这个售出物品不在预期列表里,显示
方法2:用INDEX+MATCH(经典多条件匹配)
如果你习惯用经典函数组合,也可以用这个公式,逻辑和上面一致:
=LET( expected_amount, INDEX(Sheet1!$F:$F, MATCH(B2&E2, Sheet1!$B:$B&Sheet1!$E:$E, 0)), IF(ISERROR(expected_amount), "Missing expected item", IF(F2=expected_amount, "OK!", IF(F2>expected_amount, "+"&(F2-expected_amount), (F2-expected_amount)) ) ) )
公式解释:
MATCH(B2&E2, Sheet1!$B:$B&Sheet1!$E:$E, 0):找到拼接后的关键词在Sheet1里的行号;INDEX(Sheet1!$F:$F, ...):根据行号取出对应的预期数量;ISERROR用来判断是否匹配成功,后续逻辑和方法1一致。
注意事项
- 确保两个表中的「供应商ID」格式完全一致(比如不要一个是数字、一个是文本,也不要有多余空格),如果有格式问题,可以用
TEXT(B2, "0")把ID转成统一格式后再拼接; - 物品类型的拼写必须完全相同(比如你例子里的
Accessories,不要出现拼写错误),否则会匹配失败; - 公式输入完成后,下拉填充到所有行即可自动生成所有对比结果。
备注:内容来源于stack exchange,提问作者DND
相关产品推荐
相关产品推荐

