如何在Google表格中按指定日期(含重复/非连续)获取每日货币汇率?
解决Google表格中获取指定日期(含重复/非连续)货币汇率的问题
我懂你现在的痛点——用时间序列模式的GOOGLEFINANCE公式时,它只会自顾自生成连续的日期序列,完全不管你B列里那些重复、断档的现金流日期,导致没法精准对应上每个日期的汇率。
其实换个思路就搞定了:针对每个单独的日期去查询汇率,而不是生成一段连续的时间序列。具体操作如下:
替换原公式为单日期查询版本,针对B列的单个日期(比如B13),使用:
=INDEX(GOOGLEFINANCE("CURRENCY:EURGBP", "price", B13), 2, 2)这个公式的逻辑是:
GOOGLEFINANCE会返回一个2行2列的数组(第一行是表头,第二行是日期和对应价格),用INDEX提取第二行第二列的数值,就是该日期的精准汇率。适配重复/非连续日期:把这个公式直接下拉到B列所有日期对应的行,每个单元格都会独立查询对应日期的汇率,不管日期是否重复、是否断档,都能1:1匹配。
优化异常情况:如果遇到周末、节假日这类没有汇率数据的日期,公式会返回
#N/A,可以用IFERROR包装一下,让结果更友好:=IFERROR(INDEX(GOOGLEFINANCE("CURRENCY:EURGBP", "price", B13), 2, 2), "无当日数据")
几个额外的小提醒:
- 确保B列的日期是标准日期格式(不是文本格式),否则
GOOGLEFINANCE无法正确识别; - 这个方法的查询效率虽然比时间序列模式稍低,但胜在完全适配你的日期列表需求,不会出现遗漏或不匹配的情况;
- 如果需要批量处理大量日期,也可以用数组公式一次性生成所有结果,比如:
注意:数组公式模式下,部分版本的Google表格可能需要调整,若出现错误,还是用下拉单个公式的方式更稳妥。=ARRAYFORMULA(IF(B13:B="", "", IFERROR(INDEX(GOOGLEFINANCE("CURRENCY:EURGBP", "price", B13:B),,2), "无当日数据")))
内容的提问来源于stack exchange,提问作者Ged
相关产品推荐
相关产品推荐

