带合并单元格的表格,怎么进行条件求和?

墨云轩
墨云轩 Lv.2 潜力创作者KVPWPS寻令官

Lv.2潜力创作者

大家好,今天跟大家分享一个比较实用的表格处理技巧。如下图所示:

当条件区域包含合并单元格时,我们直接使用SUMIF或SUMIFS函数求和可能会得到错误结果,因为合并单元格只有左上角单元格有实际值,其余单元格为空。

那么如何在保持表格样式不变的情况下,还能实现正常的求和呢?

这里介绍几种比较常见的的解决方法。

一.利用辅助列

在D列添加辅助列,在D6单元格输入公式=IF(A6<>"",A6,D5),并下拉填充。

该公式将合并单元格中的空值填充为上方最近的非空值。

然后使用SUMIF函数基于辅助列进行条件求和:=SUMIF(D6:D15,E6,C6:C15)

具体操作看动图:

二.利用“假合并”。

如果不想使用辅助列,可以利用“假合并”。

具体步骤如下:

1.选择A6:A16合并单元格区域,复制粘贴H6:H16的空白区域,建立辅助区域

2.取消A6:A16合并单元格区域,并把数据填充完整。

3.选择H6:H16的空白区域,单击一下格式刷,使用格式刷刷一下A6:A16区域,然后删除H6:H16辅助区域列。

这时A6:A16又变成了合并单元格样式,但实际上是“假合并",它的每个单元格值都存在。

4.最后用Sumif函数求和即可

具体操作看动图:

需要说明的是:在取消A6:A16合并单元格区域,并把数据填充完整这一步,因为WPS表格有合并 — 拆分并填充内容,这样的技巧,比较简单实用。

如果是Excel,取消合并后,需要选择A6:A16区域,按F5定位到空值,输入=A6,按Ctrl+Enter,批量填充,最后选择A6:A16区域复制粘贴为值,才能完成,略显麻烦。

具体操作看动图:

总体来说这种方法比较麻烦,那么能不能直接用函数来完成?答案是肯定的。

三.使用Scan函数

具体操作看动图:

公式解释:=SUM((SCAN("",A7:A16,LAMBDA(x,y,IF(y="",x,y)))=E7)*C7:C16)

该公式通过SCAN函数逐行扫描条件区域,将空单元格填充为上方最近的非空值,再用sum进行条件求和。

另外,还可以用=SUM(FILTER(C7:C16,SCAN("",A7:A16,LAMBDA(x,y,IF(y="",x,y)))=E7))

该公式也是通过SCAN函数逐行扫描条件区域,将空单元格填充为上方最近的非空值,再用filter筛选出符合条件的数值,最后用sum求和。

四.使用lookup函数

如果使用的WPS,或者Excel版本低,没有scan,lambda……,这些新函数,我们可以用lookup函数来完成求和。

具体操作看动图:

公式解释:=SUM((LOOKUP(ROW($7:$16), IF($A$7:$A$16<>"", ROW($7:$16)), $A$7:$A$16)=E7)*$C$7:$C$16)

LOOKUP函数通过查找非空单元格的行号,将合并单元格区域中的空值填充为上方最近的非空值,从而形成完整的条件判断数组。将条件判断结果与求和区域相乘,再用sum函数求和,对不支持动态数组的版本WPS或Excel,最后按三键Ctrl+Shift+Enter实现条件求和。

上图是lookup函数各个参数对应的数据。大家看看能否理解这个函数的意思?

今天的分享就到这里。关于这个问题,你是否还有更好的解决方法?欢迎留言分享!


我是墨云轩,热衷分享办公小技巧,边学习,边分享,每天进步一点点!感谢您的阅读!

河北省
浏览 234
3
19
分享
19 +1
2
3 +1
全部评论 2
 
亂雲飛渡
实用,点赞
· 广东省
回复
墨云轩
感谢支持!
· 河北省
回复