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

ARRAYFORMULA+SUMIF先取整分组求和报错,求解决办法

问题解决:按分组先取整再求和

原始数据

A列B列
A1
A2
B-1.7148
B1.3454
B.3694

需求:使用单个公式,按A列的值对B列数值先保留两位小数取整,再分组求和。

原公式与结果

原公式:

=ARRAYFORMULA(sumif(a:a,unique(a:a),b:b))

当前结果:

当前结果
3
0

期望结果

期望结果
3
.01

尝试的错误公式

修改后的公式出现错误提示Argument must be a range.:

=ARRAYFORMULA(sumif(a:a,unique(a:a),round(b:b,2)))

原因:SUMIF的第三个参数要求是实际单元格区域,不能是通过函数计算生成的数组(ROUND(B:B,2)属于计算数组,不是单元格范围)。

可行解决方案

方案1:使用QUERY函数(推荐,同时返回分组标签和结果)

=QUERY({A:A,ROUND(B:B,2)}, "select Col1, sum(Col2) where Col1 is not null group by Col1 label sum(Col2)''", 1)
  • 原理:将A列和取整后的B列组合成虚拟数组,通过QUERY语句实现分组求和,自动过滤空白行,结果会显示分组(A/B)和对应的求和值。

方案2:使用MAP+LAMBDA+SUM组合(仅返回求和结果)

=ARRAYFORMULA(MAP(UNIQUE(A:A), LAMBDA(x, SUM(ROUND(FILTER(B:B, A:A=x), 2)))))
  • 原理:用UNIQUE(A:A)获取所有分组值,通过MAP遍历每个分组,筛选对应B列数据取整后求和。

方案3:使用SUMPRODUCT数组运算

=ARRAYFORMULA(SUMPRODUCT((A:A=UNIQUE(A:A))*ROUND(B:B,2)))
  • 原理:利用数组匹配分组条件,将符合条件的取整后数值相乘求和,注意如果A列有空白行,建议限定具体范围(如A2:A6、B2:B6)避免干扰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 18:25:21