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

如何用单个ARRAYFORMULA计算A列数字的各位之和并输出到B列?

用单个ARRAYFORMULA计算A列数字的各位之和

没问题,我帮你搞定这个批量计算各位数字之和的需求!你之前拆分数字的思路已经很对了,只是卡在了批量对每行的拆分数字求和这一步,下面给你两种可行的方案,完全用ARRAYFORMULA实现:

方案一:MID+MMULT(高效适合大数据量)

直接在B1单元格输入这个公式,就能自动计算A列所有数字的各位之和:

=ARRAYFORMULA(IF(A:A="",,MMULT(--MID(A:A&"",SEQUENCE(1,MAX(LEN(A:A))),1),SEQUENCE(MAX(LEN(A:A)),1,1,0))))

拆解一下逻辑:

  • IF(A:A="",, ...):跳过A列的空单元格,避免返回不必要的0
  • MID(A:A&"", SEQUENCE(1, MAX(LEN(A:A))), 1):把A列每个数字拆成单个字符的横向数组,SEQUENCE会生成从1到A列最长数字长度的序列,确保所有位数都能被拆分到
  • --:把拆分出来的文本字符转成可计算的数字
  • MMULT(...):用矩阵乘法实现逐行求和,第二个参数是全1的列数组,相当于把每行的所有单个数字加起来

方案二:基于你的REGEX思路改进(可读性更强)

如果你更想沿用自己用REGEXEXTRACT拆分的方法,套个BYROW就能批量处理了:

=ARRAYFORMULA(IF(A:A="",,BYROW(A:A,LAMBDA(x,SUM(VALUE(REGEXEXTRACT(x&"",REPT("(.)",LEN(x)))))))))

解释一下:

  • BYROW(A:A, LAMBDA(x, ...)):遍历A列的每一行,把当前行的数字传给变量x
  • 括号里的SUM(VALUE(REGEXEXTRACT(...)))就是你之前写的单个数字求和逻辑,现在能自动应用到每一行了

为什么你之前的方法行不通?

你之前的公式只能处理单个单元格,而且SUM()没办法在ARRAYFORMULA里自动识别“对每行的横向数组求和”——要么用BYROW明确指定逐行处理,要么用MMULT通过矩阵运算实现批量求和,这两个是关键的解决点。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:28:33