如何在Google Sheets中单次调用GOOGLEFINANCE查询股票自定义周期高低价
实现方案
操作步骤
- 第一步:固定全量数据拉取逻辑,将
AB19单元格的值设为你需要的最大查询周期(例如365),保持=IFERROR(GOOGLEFINANCE("QQQ", "price", (today() - AB19), today(), "DAILY"))公式不变,一次性拉取对应时长的所有日期、价格数据存储在AA、AB列,后续不再修改AB19的值,就不会重复触发GOOGLEFINANCE接口请求。 - 第二步:新增一个独立单元格存储自定义查询周期,例如将你需要的查询天数(如43)填入
AC19单元格,后续修改自定义周期仅修改这个单元格即可。 - 第三步:用本地筛选+聚合函数计算对应周期的最高/低价,完全不会调用外部接口。
可用公式
计算自定义周期最高价
=MAX(FILTER(AB:AB, AA:AA >= TODAY()-AC19, AA:AA <= TODAY()))
计算自定义周期最低价
=MIN(FILTER(AB:AB, AA:AA >= TODAY()-AC19, AA:AA <= TODAY()))
原Filter函数报错原因
你之前使用的=filter(AB21:AB271,AA21:AA271 >10/1/2021)公式中,10/1/2021会被Google表格默认识别为除法运算(10÷1÷2021),返回的是数值而非日期格式,和AA列的日期类型不匹配,因此无法筛选到正确结果。如果需要指定固定日期筛选,需要用DATE(年,月,日)格式写法,例如DATE(2021,10,1)。
容错优化
如果担心自定义周期超过已拉取的最大数据范围,可以给公式加容错处理:=IFERROR(MAX(FILTER(AB:AB, AA:AA >= TODAY()-AC19, AA:AA <= TODAY())), "查询周期超过已拉取数据范围")
内容的提问来源于stack exchange,提问作者James Raitsev
相关产品推荐
相关产品推荐

