You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Excel INDEX MATCH函数返回最近日期对应的目标值?

解决INDEX MATCH返回最近日期对应值的问题

核心需求是:根据指定匹配值(H4),找到对应行中最近日期所在的行,再返回目标表头(I3)对应列的值。

正确公式(Excel 365/2021 或兼容动态数组版本)

=INDEX($B$3:$E$11,
        MATCH(1,($B$3:$B$11=H4)*($C$3:$C$11=MAXIFS($C$3:$C$11,$B$3:$B$11,H4)),0),
        MATCH(I$3,$B$3:$E$3,0))
  • 直接回车即可生效,无需数组输入

兼容旧版Excel的数组公式

如果使用Excel 2019及更早版本,需按 Ctrl+Shift+Enter 输入以下公式:

=INDEX($B$3:$E$11,
        MATCH(1,($B$3:$B$11=H4)*($C$3:$C$11=MAX(IF($B$3:$B$11=H4,$C$3:$C$11))),0),
        MATCH(I$3,$B$3:$E$3,0))

公式逻辑拆解

  1. 获取最近日期:
    • 新版用MAXIFS($C$3:$C$11,$B$3:$B$11,H4):筛选B列等于H4的所有行,提取C列日期中的最大值(最近日期)
    • 旧版用MAX(IF($B$3:$B$11=H4,$C$3:$C$11)):通过IF数组筛选匹配行的日期,再取最大值
  2. 定位目标行:
    ($B$3:$B$11=H4)*($C$3:$C$11=最近日期) 生成一个数组,同时满足两个条件的位置会返回1,其他为0;再用MATCH找到这个1对应的行号
  3. 定位目标列:
    MATCH(I$3,$B$3:$E$3,0) 找到I3表头在数据区域首行的列号
  4. 返回结果:INDEX根据行号和列号返回交叉单元格的值

你之前公式的问题

  • MAXIFS语法错误:正确格式是MAXIFS(数值范围,条件范围1,条件1),你写的MAXIFS(C3:C11,H4=B3:B11)不符合规范
  • AGGREGATE用法错误:公式中AGGREGATE参数不完整,且未和匹配条件正确结合
  • 括号配对错误:两个公式都存在括号不匹配的问题,导致无法计算

内容的提问来源于stack exchange,提问作者Florentine

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 14:24:30