如何基于代码+日期双条件匹配Sheet2列维度数据填充Sheet1价格列?
双条件匹配填充价格列的Excel公式方案
核心需求
Sheet1的价格列需同时满足两个匹配条件:
- 依据代码定位Sheet2中对应的行
- 依据日期的月份匹配Sheet2中对应的价格列(Sheet2为月份列构成的价格矩阵)
公式实现(两种方案)
方案1:XLOOKUP嵌套匹配(推荐)
假设Sheet1的代码在A2单元格,日期在B2单元格,Sheet2的代码列是A:A,月份表头行是1:1,价格区域是B:Z,则Sheet1价格列(如C2)的公式为:
=XLOOKUP(MONTH(B2), MONTH(Sheet2!B1:Z1), XLOOKUP(A2, Sheet2!A:A, Sheet2!B:Z))
公式拆解:
XLOOKUP(A2, Sheet2!A:A, Sheet2!B:Z):根据Sheet1的代码,在Sheet2中找到对应行,返回该行所有月份的价格数据区域MONTH(B2):提取Sheet1日期的月份数字(如1代表1月)XLOOKUP(MONTH(B2), MONTH(Sheet2!B1:Z1), ...):用提取的月份,在Sheet2的表头月份中匹配对应列,最终返回目标价格
方案2:INDEX+MATCH组合(兼容旧版Excel)
如果你的Excel版本不支持XLOOKUP,可用经典的INDEX+MATCH组合实现:
=INDEX(Sheet2!B:Z, MATCH(A2, Sheet2!A:A, 0), MATCH(MONTH(B2), MONTH(Sheet2!B1:Z1), 0))
公式拆解:
MATCH(A2, Sheet2!A:A, 0):找到Sheet2中与Sheet1代码匹配的行号MATCH(MONTH(B2), MONTH(Sheet2!B1:Z1), 0):找到Sheet2中对应月份的列号INDEX(Sheet2!B:Z, 行号, 列号):根据行号和列号定位到目标价格单元格
注意事项
- 确保Sheet2的表头是日期格式(如
2024/1/1),否则MONTH函数无法正确提取月份;如果表头是纯数字月份(如1、2),直接去掉公式中的MONTH函数即可 - 公式输入完成后,直接下拉填充到整个价格列即可自动匹配所有行
- 若出现
#N/A错误,检查代码是否匹配、日期月份是否在Sheet2表头中存在
内容的提问来源于stack exchange,提问作者Hussein Geebril
相关产品推荐
相关产品推荐

