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

能否将Array Formula自动填充列的原理应用到行实现自动求和?

行方向自动适配新增列/行的求和方案

你的需求完全可以实现,之前替换行范围后求和错误,大概率是没处理好行方向的逐行求和逻辑——普通数组公式直接套SUM会把整个区域的数值累加,而非每行单独求和。结合你每月在B列插入新月份列的场景,给你两种主流表格工具的实现方案:

Google Sheets 实现

假设你的数据从B列开始(B列为最新月份,C、D...为历史月份),求和列放在A列(每行A单元格对应该行所有月份数据的总和),在A2单元格输入以下公式:

=ARRAYFORMULA(IF(B2:B="",,BYROW(B2:INDEX(B:Z,ROWS(B:B),COUNTA(1:1)),LAMBDA(row,SUM(row)))))

公式说明:

  • ARRAYFORMULA:让公式自动应用到A列所有行,新增行无需手动添加公式
  • IF(B2:B="",, ...):跳过空行,避免生成无效的0值
  • INDEX(B:Z,ROWS(B:B),COUNTA(1:1)):动态获取数据区域的最后一列(COUNTA(1:1)统计第一行的月份列数量,自动适配新增的B列)
  • BYROW + LAMBDA:逐行遍历数据区域,对每行单独求和

如果你的表格版本不支持BYROW,可以用兼容性更好的MMULT写法:

=ARRAYFORMULA(IF(B2:B="",,MMULT(N(B2:Z),TRANSPOSE(COLUMN(B2:Z)^0))))

MMULT通过矩阵乘法实现逐行求和,COLUMN(B2:Z)^0生成全1的辅助数组,确保每行数值被累加。

Excel 实现

Excel支持动态数组公式,在求和列的第一个单元格(比如A2)输入:

=BYROW(B2:INDEX(B:XFD,ROWS(B:B),COUNTA(1:1)),LAMBDA(r,SUM(r)))

公式说明:

  • BYROW + LAMBDA:逐行处理数据区域,实现每行单独求和
  • INDEX(B:XFD,ROWS(B:B),COUNTA(1:1)):动态锁定到最后一列,自动包含新插入的B列
  • 公式会自动溢出到下方所有行,新增行无需手动操作

设置完成后,无论你在B列插入新月份列,还是新增数据行,求和列都会自动更新计算结果,其他工作表直接引用求和列即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 21:54:52