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

Google Sheets中Query结果的ArrayFormula运行最大值实现求助

解决方案

你可以直接将Query的结果嵌套进SCAN函数中,结合ARRAYFORMULA实现批量计算运行最大值,无需依赖辅助列或下拉操作,公式如下:

=ARRAYFORMULA(SCAN(0, QUERY(GOOGLEFINANCE("SPX","price",TODAY()-365,TODAY()),"Select Col2 offset 1",0), LAMBDA(acc, val, MAX(acc, val))))

公式说明:

  • QUERY(...):保持你原有的逻辑,获取标普500(SPX)过去一年的每日价格数据,返回单列结果(offset 1移除了表头行)。
  • SCAN(0, 数据数组, LAMBDA(acc, val, MAX(acc, val))):SCAN函数会遍历数据数组中的每个值:
    • 0是初始累计值(因为SPX价格不可能为负,所以初始值设0不影响结果);
    • 每次迭代时,acc代表到上一行的运行最大值,val是当前行的价格;
    • 通过MAX(acc, val)更新累计最大值,最终生成每一行对应的运行最大值数组。
  • ARRAYFORMULA:确保公式一次性输出所有行的结果,无需手动下拉填充。

替代方案(适配旧版Google Sheets):

如果你的Google Sheets版本不支持SCAN函数,可以用BYROW结合INDEX实现:

=ARRAYFORMULA(BYROW(SEQUENCE(ROWS(QUERY(GOOGLEFINANCE("SPX","price",TODAY()-365,TODAY()),"Select Col2 offset 1",0))), LAMBDA(n, MAX(INDEX(QUERY(GOOGLEFINANCE("SPX","price",TODAY()-365,TODAY()),"Select Col2 offset 1",0), 1:n)))))

这个公式通过SEQUENCE生成行号序列,对每一行n,计算Query结果中第1到n行的最大值,不过因为重复调用了两次Query,数据量大时效率不如SCAN方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 12:29:59