Google Sheets中GOOGLEFINANCE获取指定年份个股高低价出错求解
问题分析与修正方案
原公式错误原因
你的公式存在两个核心问题:
- 日期区间逻辑错误:原公式用
DATE(YEAR(TODAY())-A22,MONTH(TODAY()),DAY(TODAY()))作为起始日期,实际取的是「当前日期往前推A22年的当天」到「今天」的区间,而非完整的指定自然年份(比如2023年1月1日至12月31日),导致每次查询的区间都包含到当前的最新数据,所以MAX结果重复为当前阶段的最高价。 - 未锁定完整年份范围:没有指定目标年份的全年首尾日期,无法获取该年份的完整交易数据。
修正后的公式
根据A22的含义分两种场景:
场景1:A22是具体年份(如2023、2022)
- 年度最高价公式:
=MAX(INDEX(GOOGLEFINANCE($C$7, "price", DATE(A22, 1, 1), DATE(A22, 12, 31)), 0, 2))
- 年度最低价公式:
=MIN(INDEX(GOOGLEFINANCE($C$7, "price", DATE(A22, 1, 1), DATE(A22, 12, 31)), 0, 2))
场景2:A22是「第N年」(如1代表去年,2代表前年)
- 年度最高价公式:
=MAX(INDEX(GOOGLEFINANCE($C$7, "price", DATE(YEAR(TODAY())-A22, 1, 1), DATE(YEAR(TODAY())-A22, 12, 31)), 0, 2))
- 年度最低价公式:
=MIN(INDEX(GOOGLEFINANCE($C$7, "price", DATE(YEAR(TODAY())-A22, 1, 1), DATE(YEAR(TODAY())-A22, 12, 31)), 0, 2))
额外提示
- 确保C7单元格的股票代码格式正确(美股直接写代码如
AAPL,港股需加前缀如HK:0700) - 若返回
#N/A,可能是目标年份无交易数据或代码无效,可添加IFERROR处理:
=IFERROR(MAX(INDEX(GOOGLEFINANCE($C$7, "price", DATE(YEAR(TODAY())-A22, 1, 1), DATE(YEAR(TODAY())-A22, 12, 31)), 0, 2)), "无数据")
内容的提问来源于stack exchange,提问作者lance
相关产品推荐
相关产品推荐

