含区间数值的多条件Index Match跨工作表匹配实现方法咨询
跨工作表多条件区间匹配实现方案
方案可行性
INDEX+MATCH组合完全可以满足你的需求,通过布尔逻辑叠加即可同时实现精准匹配和区间校验。
具体公式
场景1:在「main data」表新增列,查询每行匹配到的对应日期
你可以在「main data」表任意空白列的第2行输入以下公式,下拉填充即可:
=INDEX(schedule!C:C,MATCH(1,(schedule!B:B=I2)*(schedule!D:D<=G2)*(schedule!E:E>=G2),0))
逻辑说明:
- MATCH函数的参数里三个条件相乘,只有三个条件同时成立时结果才为1,即可定位到第一个符合要求的行号
schedule!B:B=I2:实现「schedule」B列和「main data」当前行I列的完全匹配schedule!D:D<=G2:校验「main data」当前行G列值大于等于「schedule」对应行的区间下限schedule!E:E>=G2:校验「main data」当前行G列值小于等于「schedule」对应行的区间上限
- INDEX函数根据MATCH返回的行号,提取对应行的日期值
场景2:在「schedule」表新增列,查询每行匹配到的「main data」表对应日期
你可以在「schedule」表任意空白列的第2行输入以下公式,下拉填充即可:
=INDEX('main data'!C:C,MATCH(1,('main data'!I:I=B2)*('main data'!G:G>=D2)*('main data'!G:G<=E2),0))
常见问题处理
- Excel环境使用时,输入完公式需要按
Ctrl+Shift+Enter启用数组计算模式,WPS、谷歌 Sheets直接回车即可生效 - 如果存在多个符合条件的匹配结果,公式会默认返回第一个匹配到的结果
- 无匹配结果时公式会返回#N/A报错,你可以在外层嵌套IFERROR函数自定义返回值,示例:
=IFERROR(INDEX(schedule!C:C,MATCH(1,(schedule!B:B=I2)*(schedule!D:D<=G2)*(schedule!E:E>=G2),0)),"无匹配")
内容的提问来源于stack exchange,提问作者Beee
相关产品推荐
相关产品推荐

