如何让Excel的STOCKHISTORY函数返回月末汇率而非月初汇率?
解决Excel STOCKHISTORY获取月末汇率的问题
你遇到的问题是因为STOCKHISTORY的**每月间隔参数(第四个参数设为2)**默认取每个月的第一个交易日,而非你指定的月末日期。要获取月末汇率,得换个思路,直接定位到每个月的最后一个交易日(若月末当天是非交易日,函数会自动返回最近的有效交易日数据)。
给你两种实用方法:
方法1:辅助列生成月末日期+逐个获取汇率
- 先在A列生成2022年每个月的月末日期,用EOMONTH函数:
=EOMONTH("2022/1/1",SEQUENCE(12)-1)
这个公式会自动生成12个月末日期(从2022/1/31到2022/12/31)。 - 在B列对应位置输入公式获取汇率:
=STOCKHISTORY("EUR/CAD",A1,A1,0,1)
把公式往下拖,就能得到每个月末(或最近前一个交易日)的EUR/CAD汇率。
方法2:动态数组一次性输出(无需辅助列)
用LET+MAP函数组合,直接生成日期和汇率的对应表:
=LET( dates, EOMONTH("2022/1/1",SEQUENCE(12)-1), rates, MAP(dates, LAMBDA(d, STOCKHISTORY("EUR/CAD",d,d,0,1))), HSTACK(dates, rates) )
dates:生成全年12个月末日期;rates:遍历每个日期,调用STOCKHISTORY获取当天汇率;HSTACK:把日期和汇率合并成两列输出。
注意事项
如果月末当天是周末或外汇市场节假日,STOCKHISTORY会自动返回最近的前一个交易日的汇率——这是正常的,因为非交易日没有官方汇率报价。
内容的提问来源于stack exchange,提问作者mountrainier
相关产品推荐
相关产品推荐

