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

Google Sheets Query双查询内实现算术运算计算储蓄率求助

Google Sheets QUERY 月度收支表加储蓄率解决方案

方案1:现有公式基础上直接扩展

你原有双QUERY存在一个隐性问题:第二个QUERY缺少和第一个一致的ORDER BY C DESC排序逻辑,可能出现储蓄额和月份不匹配的问题,修正后直接拼接计算列即可:

=LET(
  // 原有统计结果,修正第二个QUERY的排序逻辑
  base_arr, {
    QUERY(Expense_Data, "SELECT C, SUM(Q) where T is not null GROUP BY C PIVOT T ORDER BY C desc limit 3",1),
    QUERY(Expense_Data, "Select Sum(Q) where T is not null Group by C ORDER BY C desc limit 3 label Sum(Q) 'Savings'")
  },
  // 储蓄率计算,跳过表头行,错误值(收入为0的情况)返回空
  rate_arr, {"储蓄率"; ARRAYFORMULA(IFERROR(INDEX(base_arr, SEQUENCE(ROWS(base_arr)-1,1,2),4)/INDEX(base_arr, SEQUENCE(ROWS(base_arr)-1,1,2),3), ""))},
  // 拼接结果
  {base_arr, rate_arr}
)

如果你的表格不支持LET函数,直接把原有公式重复代入即可:

={
  你原来的双QUERY公式(记得给第二个QUERY加ORDER BY C DESC),
  {"储蓄率"; ARRAYFORMULA(IFERROR(INDEX(你原来的双QUERY公式, SEQUENCE(ROWS(你原来的双QUERY公式)-1,1,2),4)/INDEX(你原来的双QUERY公式, SEQUENCE(ROWS(你原来的双QUERY公式)-1,1,2),3), ""))}
}

方案2:重构为单QUERY(更推荐)

避免多QUERY拼接的行对齐问题,直接用条件聚合实现所有字段计算,逻辑更稳定:

=QUERY(
  Expense_Data,
  "SELECT C,
   SUM(IF(T='支出',Q,0)),
   SUM(IF(T='收入',Q,0)),
   SUM(IF(T='收入',Q,0)) - SUM(IF(T='支出',Q,0)),
   (SUM(IF(T='收入',Q,0)) - SUM(IF(T='支出',Q,0)))/SUM(IF(T='收入',Q,0))
   WHERE T IS NOT NULL
   GROUP BY C
   ORDER BY C DESC
   LIMIT 3
   LABEL SUM(IF(T='支出',Q,0)) '支出',
         SUM(IF(T='收入',Q,0)) '收入',
         SUM(IF(T='收入',Q,0)) - SUM(IF(T='支出',Q,0)) '储蓄',
         (SUM(IF(T='收入',Q,0)) - SUM(IF(T='支出',Q,0)))/SUM(IF(T='收入',Q,0)) '储蓄率'
  FORMAT (SUM(IF(T='收入',Q,0)) - SUM(IF(T='支出',Q,0)))/SUM(IF(T='收入',Q,0)) '0.00%'
  ",
  1
)

注:如果你的T列中收支类型的标签不是「支出」「收入」,替换为你实际的字段值即可,FORMAT子句可自动将储蓄率转为百分比格式,无需手动调整单元格格式。

注意事项

  • 若当月收入为0,储蓄率计算会返回空值,避免出现除以0的错误
  • 单QUERY方案后续调整统计字段、计算逻辑的成本更低,优先选择

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 13:54:03