如何在Excel中查找最后一个最低/最高值对应的日期?附国债利率实例
解决Excel中查找最后一个符合条件的日期问题
嘿,我懂你现在的困扰——用常规的INDEX+MATCH组合找2017年12月29日前最后一个利率低于2.40的日期时,结果总是随机跳出更早的低值,根本不是你要的2017年12月18日对吧?别慌,咱们用几个靠谱的方法来搞定这个问题。
方法一:用LOOKUP函数(兼容所有Excel版本)
LOOKUP函数天生擅长查找最后一个匹配条件的值,非常适合你的场景。假设你的日期数据在A列(表头为“日期”,数据从A2开始),10年期国债利率在B列(表头为“利率”,数据从B2开始),可以直接用这个公式:
=LOOKUP(2,1/((A:A<=DATE(2017,12,29))*(B:B<2.4)),A:A)
公式原理:
(A:A<=DATE(2017,12,29))*(B:B<2.4):这部分会生成一个由TRUE/FALSE组成的数组,两个条件都满足时返回TRUE(即1),否则返回FALSE(即0)。1/():把符合条件的位置转换成1,不符合的位置变成错误值(#DIV/0!)。- LOOKUP会忽略错误值,在数组中寻找小于2的最后一个值(也就是最后一个1),然后返回对应A列的日期。
方法二:用MAXIFS函数(Excel 2019及以后版本可用)
如果你的Excel版本支持MAXIFS,这个方法更直观——直接找到同时满足两个条件的最大日期(也就是最后一个符合条件的日期):
=MAXIFS(A:A,A:A,"<=2017-12-29",B:B,"<2.4")
MAXIFS的逻辑很简单:第一个参数是要返回值的列(日期列A),后面依次是条件区域和条件,完美匹配你的需求。
方法三:数组公式(兼容老版本Excel)
如果你用的是Excel 2016及更早版本,没有MAXIFS,可以用数组公式来实现:
=MAX(IF((A:A<=DATE(2017,12,29))*(B:B<2.4),A:A))
⚠️ 注意:输入完公式后,需要按Ctrl+Shift+Enter组合键来确认(新版本Excel可能自动识别数组公式,但老版本必须手动按)。
为什么你的INDEX+MATCH没生效?
常规的INDEX+MATCH组合(比如=INDEX(A:A,MATCH(TRUE,(条件),0)))默认会返回第一个符合条件的位置,而不是最后一个,这就是为什么你会得到随机的较早低值。要让INDEX+MATCH找最后一个,需要结合ROW函数来定位最大行号,但上面的方法比这个组合更简洁可靠。
内容的提问来源于stack exchange,提问作者Skycloud
相关产品推荐
相关产品推荐

