Excel二维查找问题:如何匹配Shipping表数据自动填充订单运费?
解决方案
直接用INDEX+双MATCH的二维查找组合即可,完全不需要提前维护行列序号辅助列,完美适配行列动态增减的场景。
公式写法(适配订单工作表R列首行数据行,比如数据从第2行开始,可自行调整对应行号)
=INDEX(Shipping!$B:$ZZ, MATCH(G2, Shipping!$A:$A, 0), MATCH(C2, Shipping!$1:$1, 0))
逻辑说明
- 第一个
MATCH(G2, Shipping!$A:$A, 0):拿当前行的国家(G列),到Shipping表的A列(国家行维度列)精确匹配对应的行号,国家新增/删除时匹配逻辑自动生效 - 第二个
MATCH(C2, Shipping!$1:$1, 0):拿当前行的产品(C列),到Shipping表的第1行(产品列维度行)精确匹配对应的列号,产品新增/删除时匹配逻辑自动生效 INDEX函数根据上面返回的行号+列号,直接提取Shipping表对应「国家-产品」单元格的运费值
高版本Excel可选写法
如果使用365/2021及以上版本,也可以用XLOOKUP嵌套写法,逻辑更直观:
=XLOOKUP(G2, Shipping!$A:$A, XLOOKUP(C2, Shipping!$1:$1, Shipping!$B:$ZZ))
异常处理优化
如果存在产品/国家找不到的场景,可以在外层套IFERROR自定义返回值,示例如下:
=IFERROR(INDEX(Shipping!$B:$ZZ, MATCH(G2, Shipping!$A:$A, 0), MATCH(C2, Shipping!$1:$1, 0)), "无对应运费")
注意:如果你的Shipping表维度是国家放在首行、产品放在首列,把两个MATCH的查找区域互换即可。
内容的提问来源于stack exchange,提问作者Kris
相关产品推荐
相关产品推荐

