Excel 2000:按指定年份查找对应日期列最后一行的余额值及单元格位置
Excel 2000:按指定年份查找对应日期列最后一行的余额值及单元格位置
嘿,我太懂你在Excel 2000里的难处了——老版本没那些花里胡哨的新函数,但咱们用现有工具完全能搞定这两个需求,不用愁!
1. 查找指定年份最后一个日期对应的余额值
直接用这个公式就行:
=LOOKUP(2,1/(YEAR(A23:A1000)=C1),B23:B1000)
我给你拆解下这个公式的逻辑,你就明白为啥它能成:
YEAR(A23:A1000)=C1:逐个检查A23到A1000的日期,提取年份后和C1里的目标年份对比,生成一堆TRUE(匹配)和FALSE(不匹配)1/(...):把TRUE转成1,FALSE转成#DIV/0!错误值,这样就得到一个只有1和错误的数组LOOKUP(2, 这个数组, B23:B1000):LOOKUP会自动忽略错误值,而且2比所有的1都大,所以它会定位到数组里最后一个1的位置,然后返回对应B列的余额值——刚好就是你要的“最后一个匹配年份的余额”
要是输入公式后没出正确结果,记得按Ctrl+Shift+Enter触发数组计算(Excel 2000里这种数组操作得手动按这个组合键才行)。
2. 查找该余额对应的单元格位置
分两种情况,你可以按需选:
先拿最后匹配行的行号
用这个数组公式(同样要按Ctrl+Shift+Enter):
=MAX(IF(YEAR(A23:A1000)=C1,ROW(A23:A1000),0))
逻辑很简单:IF函数会把年份匹配的单元格行号保留下来,不匹配的就返回0,MAX函数一抓就得到最大的那个行号——也就是最后一个匹配日期所在的行。
直接获取完整的单元格地址(比如$B$567)
把上面的行号和ADDRESS函数结合就行,还是数组公式(按Ctrl+Shift+Enter):
=ADDRESS(MAX(IF(YEAR(A23:A1000)=C1,ROW(A23:A1000),0)),COLUMN(B:B))
这里COLUMN(B:B)是获取B列的列号(也就是2),ADDRESS会把行号和列号拼成标准的单元格地址格式,直接就能看到位置啦。
小提醒:确保A列的单元格是正经的日期格式,不是文本哦,不然YEAR函数会出错。要是不小心是文本的话,先把它转成日期格式再用公式~
备注:内容来源于stack exchange,提问作者Art
相关产品推荐
相关产品推荐

