Google Sheets中匹配序列号并计算对应成本差值的实现方法
Google Sheets 序列号匹配并计算成本差值方案
直接给你几个能解决问题的公式,以及之前报错的可能原因:
基础精确匹配公式(不区分大小写)
如果你的A列是待匹配序列号,B列是对应成本;C列是目标序列号,D列是对应成本,要计算B列减D列的差值(可自行调换顺序),在E2单元格输入:
=IFERROR(B2 - INDEX(D:D, MATCH(A2, C:C, 0)), "无匹配")
下拉填充即可。
- 原理:用
MATCH(A2, C:C, 0)找到A2在C列的精确匹配位置,再用INDEX(D:D, 位置)提取对应成本,最后和B列计算差值,IFERROR处理无匹配的情况,返回自定义提示。
如果习惯用VLOOKUP,也可以用这个:
=IFERROR(B2 - VLOOKUP(A2, C:D, 2, FALSE), "无匹配")
区分大小写的精确匹配
如果序列号大小写不同算不匹配(比如ABC123和abc123要区分),用下面的数组公式(输入后按Ctrl+Shift+Enter,新版Sheets直接回车即可自动识别):
=IFERROR(B2 - INDEX(D:D, MATCH(TRUE, EXACT(A2, C:C), 0)), "无匹配")
要自动批量处理整列的话,用BYROW函数更省心:
=BYROW(A2:A, LAMBDA(x, IFERROR(INDEX(B:B, MATCH(x, A:A, 0)) - INDEX(D:D, MATCH(TRUE, EXACT(x, C:C), 0)), "无匹配")))
之前用MATCH/QUERY报错的常见原因
- MATCH函数:大概率是没加第三个参数
0,默认近似匹配对文本序列号完全不适用;或者序列号带隐藏空格,可先用TRIM(A2)和TRIM(C:C)处理后再匹配。 - QUERY函数:多数是字符串拼接错误,匹配文本时没给序列号加单引号,正确写法应该是:
这里=IFERROR(B2 - QUERY(C:D, "select D where C = '"&A2&"'", 0), "无匹配")'"&A2&"'把A2的文本内容包裹在单引号里,符合QUERY语法要求,之前可能漏了单引号导致报错。
内容的提问来源于stack exchange,提问作者Jeremy Hansma
相关产品推荐
相关产品推荐

