You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Google Sheets中以数组形式获取股票指定周期每日涨跌幅?

在Google Sheets中用数组获取指定周期股票每日涨跌幅

要批量计算指定周期(如过去30天、1年)的股票每日涨跌幅,核心逻辑是**(当日收盘价 - 前一日收盘价) / 前一日收盘价**,结合Google Sheets的数组函数可以一次性生成结果,无需手动下拉公式。

基础实现思路

  1. 用GOOGLEFINANCE获取目标周期的收盘价数据
  2. 利用数组运算,将当日收盘价与前一日收盘价做差值比例计算
  3. 用函数简化重复调用,同时处理无前置数据的错误情况

1. 过去30天的每日涨跌幅数组

直接用LET函数封装变量,避免重复请求GOOGLEFINANCE,提升公式效率:

=LET(
  prices, INDEX(GOOGLEFINANCE("NASDAQ:GOOGL", "close", TODAY()-30, TODAY(), "DAILY"),,2),
  ARRAYFORMULA(IFERROR((OFFSET(prices,1,0)-prices)/prices, ""))
)
  • LET(prices, ...):把提取到的收盘价数组赋值给变量prices
  • OFFSET(prices,1,0):将收盘价数组整体下移1行,对应"前一日收盘价"
  • ARRAYFORMULA:让公式批量作用于整个数组
  • IFERROR:过滤第一个数据点的错误(无前置收盘价,显示空值)

如果需要同时显示日期+涨跌幅,可以用HSTACK合并结果:

=LET(
  data, GOOGLEFINANCE("NASDAQ:GOOGL", "close", TODAY()-30, TODAY(), "DAILY"),
  dates, INDEX(data,2:ROWS(data),1),
  prices, INDEX(data,2:ROWS(data),2),
  changes, ARRAYFORMULA(IFERROR((OFFSET(prices,1,0)-prices)/prices, "")),
  HSTACK(dates, changes)
)

这里跳过了GOOGLEFINANCE返回的第一行表头,只提取实际交易数据。


2. 过去1年的每日涨跌幅数组

只需修改时间范围参数,把TODAY()-30替换为TODAY()-365即可:

=LET(
  prices, INDEX(GOOGLEFINANCE("NASDAQ:GOOGL", "close", TODAY()-365, TODAY(), "DAILY"),,2),
  ARRAYFORMULA(IFERROR((OFFSET(prices,1,0)-prices)/prices, ""))
)

关键说明

  • 所有公式均为数组公式,输入后会自动填充整个周期的涨跌幅结果
  • GOOGLEFINANCE返回的是交易日数据,非交易日(周末、节假日)会自动跳过,无需额外处理
  • 如果需要固定周期(比如2023全年),可以把TODAY()-365替换为具体日期,例如DATE(2023,1,1)和DATE(2023,12,31)

内容的提问来源于stack exchange,提问作者vishal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 19:13:13