Excel跨两表查找匹配指定值对应最大日期的公式写法
公式失效原因
原写法中两个独立IF函数返回的数组分开计算,旧版Excel跨工作表引用整列做数组计算时,会以第一个工作表的已使用区域为边界截断计算范围,第二个表超出边界的匹配日期不会被纳入统计,最终无法取到两个表的全局最大值。
正确公式方案
Excel 365/2021及以上(支持动态数组)
输入后直接按回车即可生效,无需特殊按键:
=MAX(FILTER('table1'!B:B,'table1'!A:A=A13),FILTER('table2'!B:B,'table2'!A:A=A13))
逻辑说明:
- 两个FILTER函数分别提取table1、table2中参考编号等于A13单元格值(即AAA)的所有日期
- MAX直接对两个FILTER返回的所有日期做最大值计算,按提供的测试数据会正确返回
31/12/2021
Excel 2019及更早版本(无动态数组支持)
输入公式后必须按住Ctrl+Shift三键再按回车确认,Excel会自动给公式外层套上数组标识大括号(不要手动输入大括号):
=MAX(IF('table1'!A$2:A$1000=A13,'table1'!B$2:B$1000),IF('table2'!A$2:A$1000=A13,'table2'!B$2:B$1000))
使用注意事项
- 不要直接引用整列A:A/B:B,把公式里的行号上限1000改成你实际表格的最大数据行号,避免数组计算范围溢出、卡顿
- 提前确认两表的日期列为标准日期格式,不要存为文本,否则MAX无法正确识别日期大小
- 如果存在匹配参考编号但日期为空的情况,可以在IF判断中增加非空校验,避免空值被识别为0干扰结果
内容的提问来源于stack exchange,提问作者Mandragore99
相关产品推荐
相关产品推荐

