穿越时间Excel升级之路连载8:SUMPRODUCT函数决胜Excel条件求和

您所在的位置:网站首页 sumifs多条件筛选 穿越时间Excel升级之路连载8:SUMPRODUCT函数决胜Excel条件求和

穿越时间Excel升级之路连载8:SUMPRODUCT函数决胜Excel条件求和

2023-03-24 11:52| 来源: 网络整理| 查看: 265

跟我一起,穿越时间!

回顾一下,在上一期的连载里,我分析了筛选SUBTOTAL、COUNTIF、COUNTIFS、SUM及SUMPRODUCT函数在条件计数中的各种情况,对不同原理的公式进行了分析,没有看过前面连载的可以点击头像或链接进行跳转:

穿越时间•Excel升级之路连载2:打牢Excel 2010中的数据类型基础

穿越时间•Excel升级之路连载3:数据类型检测与相互转换技巧

穿越时间•Excel升级之路连载4:精通公式运算规则和字符比较

穿越时间•Excel升级之路连载5:数组的理想照进现实

穿越时间·Excel升级之路连载6:神级函数SUMPRODUCT的惊鸿一瞥

穿越时间Excel升级之路连载7:SUMPRODUCT函数挑战Excel条件计数

如果上一期的内容都理解了,那么我们将条件计数升级为条件求和就是水到渠成的事,条件求和仍然有四种情况:单条件求和,单条件求和的和;多条件求和,多条件求和的和

今天,我们走到Excel升级之路连载8:SUMPRODUCT函数决胜Excel条件求和。

一、条件求和的四种方法

1、sumif函数和sumifs函数

SUMIF可以对满足条件的单元格求和。

SUMIF(range, criteria, [sum_range])

SUMIF(要进行计算条件的区域,条件,[用于求和的实际单元格区域])

SUMIFS可以对一组给定条件指定的单元格求和,就是对同时满足多个条件的单元格求和。

SUMIFS(sum_range, criteria_range1, criteria1, [criteria_range2, criteria2], ...)

SUMIFS(用于求和的实际单元格,计算条件的区域1,条件1,[计算条件的区域2],[条件2]…)

我们可以看到SUMIF和SUMIFS的格式稍有区别,SUMIF把条件放在前面,把要求和的单元格放在后面;而SUMIFS把要求和的单元格放在前面,把条件放在后面。

2、SUM函数

SUM函数和数组结合之后,也可以实现对条件的判断,而且判断之后,还能够再对指定的区域求和。

3、SUMPRODUCT函数

SUM函数能做到的,对于SUMPRODUCT函数来说自然不在话下。

4、筛选

这是最直观,最简单的办法,相信通过连载7中的介绍,你也已经知道筛选和分类汇总函数SUBTOTAL结合之后,可以动态自动对筛选结果进行计算,实现答案的实时更新。

二、单条件求和

我们首先来解决单条件求和问题,

问:在销售文创产品的过程中:琼英的销售额一共有多少?

1、方法一:筛选法

通过筛选法来进行分析,我们只需要在D列销售人员中筛选“琼英”,然后对H列销售额进行求和即可。

我们可以看到答案是36900

这里并不需要用鼠标选中22500、2400、12000,然后在Excel的底部状态栏里查看和是多少,

我再次在H21单元格使用了分类汇总函数SUBTOTAL,实现自动计算:

不过和连载7中所不同的是,公式变了:

=SUBTOTAL(9,H2:H18)

SUBTOTAL的第一个代码变为了9,而9代表的就是对区域求和。

SUBTOTAL用于分类汇总,函数可以返回列表或数据库中的分类汇总,语法是:SUBTOTAL(function_num,ref1,[ref2],...])

其第一个参数指定汇总函数,例如求平均值、计数、求和等,后面的参数则为计算区域,因为现在要求销售额总数,所以第一个代码指定为9,计算区域为全部销售数据H2:H18,这样我们再进行筛选,即可实现根据筛选结果自动计算。

2、方法二:SUMIF函数

=SUMIF(D2:D18,"琼英",H2:H18)

=SUMIF(D2:D18,D3,H2:H18)

公式的意思就是求销售人员D2:D18中满足D3,即满足“琼英”,然后对H2:H18中的销售额求和。公式的条件我们可以直接使用文本字符型的"琼英",也可以引用包含琼英的单元格D3

在下文的内容当中,我们优先使用单元格引用的方式。

如果直接引用不行,我们再采用写出文本字符型条件的方法。

3、方法三:SUM函数

=SUM((D2:D18=D3)*H2:H18) 按Ctrl+Shift+Enter计算

这是什么意思,如果你把前面的连载内容都理解了,那么这条公式的意思你也应该是清楚的。

(D2:D18=D3)是逻辑判断,返回由逻辑值TRUE、FALSE构成的数组,TRUE相当于满足销售人员是“琼英”的条件;

(D2:D18=D3)*H2:H18由逻辑值构成的数组乘以销售额,TRUE相当于1,FALSE相当于0,不符合“琼英”的销售额会通过乘0的方式被抹去,最后求和即为结果。

如果不理解为什么逻辑型值可以和数值相乘,为什么TRUE相当于1,FALSE相当于0,请看前面的连载。

注意:如果在SUM函数中使用多参数写法则是不对的。

=SUM(D2:D18=D3,H2:H18)

D2:D18=D3返回逻辑型数组,SUM会忽略单个参数中的逻辑值,最终计算的是所有人销售额总数。

更改一下,通过*1的方式避免逻辑值构成的数组被SUM函数忽略,写成:

=SUM((D2:D18=D3)*1,H2:H18)

这个仍然不对,这次经过计算后(D2:D18=D3)*1成为由0和1构成的数组,H2:H18是由销售额构成的数组,=SUM((D2:D18=D3)*1,H2:H18) 计算的是两个数组中元素的和(符合“琼英”的3个1和所有人的销售总额),结果是126703,没有意义。

上面两种错误写法能说明一个什么问题,再次说明SUM函数的参数是一个数组或引用时,只计算其中的数值型数字。数组或引用中的空白单元格、逻辑值、文本型数字将被忽略。(这些在连载5、6、7中都有讨论)

4、方法四:SUMPRODUCT函数

多参数写法:

=SUMPRODUCT((D2:D18=D3)*1,H2:H18)

这里使用SUMPRODUCT函数就可以了,因为(D2:D18=D3)*1返回由0和1构成的数组,H2:H18也是一个数组,SUMPRODUCT函数会对这两个数组参数求积再求和。同样,不符合“琼英”的销售额会通过乘0的方式被抹去,最后的和即为结果。

单参数写法:

=SUMPRODUCT((D2:D18=D3)*H2:H18)

单参数写法的原理和方法三中SUM结合数组基本一致,(D2:D18=D3)*H2:H18直接达到了最终符合“琼英”的销售额数组,SUMPRODUCT由于只有一个参数,便没有参数间求积的步骤了。

三、单条件求和的和

单条件求和清楚之后,我们升一下级,来看单条件求和的和。

问:琼英和段莫言的销售额一共有多少?

1、方法一:筛选

销售人员同时筛选“琼英”、“段莫言”,然后对销售额求和即可。

2、方法二:SUMIF函数

问:琼英和段莫言的销售额一共有多少?

答:把琼英的销售额和段莫言的销售额相加即可。

=SUMIF(D2:D18,D3,H2:H18)+SUMIF(D2:D18,D9,H2:H18)

这种办法的问题就是如果涉及到的人太多,一个一个累加就不是那么合适了。

3、方法三:SUM函数

分写:

把琼英的销售额和段莫言的销售额相加:

=SUM((D2:D18=D3)*H2:H18)+SUM((D2:D18=D9)*H2:H18) 按Ctrl+Shift+Enter计算

这里还有另一种思路,问琼英和段莫言的销售额一共有多少,可以理解为满足条件琼英或段莫言,销售额一共有多少,公式可以写为:=SUM(((D2:D18=D3)+(D2:D18=D9))*H2:H18)

利用加号+体现或的意思。相当于先把“琼英”和“段莫言”绑定了。

合写:

=SUM((D2:D18={"琼英","段莫言"})*H2:H18) 按Ctrl+Shift+Enter计算

=SUM((D2:D18=IF({1,0},D3,D9))*H2:H18) 按Ctrl+Shift+Enter计算

=SUM((D2:D18=CHOOSE({1,2},D3,D9))*H2:H18) 按Ctrl+Shift+Enter计算

这里合写其实是使用了异向一维数组之间的运算,D2:D18和{"琼英","段莫言"}进行判断后会生成一个二维数组,然后这个二维数组再和一维数组H2:H18求积,根据数组的运算规则,也可以通过FALSE把不是“琼英”、不是“段莫言”的销售额抹去,最后实现求和。

4、方法四:SUMPRODUCT函数

多参数分写累加、单参数分写累加:

把琼英的销售额和段莫言的销售额相加

=SUMPRODUCT((D2:D18=D3)*1,H2:H18)+SUMPRODUCT((D2:D18=D9)*1,H2:H18)

=SUMPRODUCT((D2:D18=D3)*H2:H18)+SUMPRODUCT((D2:D18=D9)*H2:H18)

这里还有另一种思路,问琼英和段莫言的销售额一共有多少,可以理解为满足条件琼英或段莫言,销售额一共有多少,公式可以写为:

=SUMPRODUCT((D2:D18=D3)+(D2:D18=D9),H2:H18)

=SUMPRODUCT(((D2:D18=D3)+(D2:D18=D9))*H2:H18)

多参数合写(不支持)

=SUMPRODUCT((D2:D18={"琼英","段莫言"})*1,H2:H18) 报错#VALUE!

因为数组(D2:D18={"琼英","段莫言"})和H2:H18尺寸不一致,SUMPRODUCT不支持

单参数合写:

=SUMPRODUCT((D2:D18={"琼英","段莫言"})*H2:H18)

=SUMPRODUCT((D2:D18=IF({1,0},D3,D9))*H2:H18)

=SUMPRODUCT((D2:D18=CHOOSE({1,2},D3,D9))*H2:H18)

四、多条件求和

问:琼英销售的瑞晶镜的销售额一共有多少?

这里多条件求和,多条件是指要满足销售人员是“琼英”,琼英销售的产品得是“瑞晶镜”,这是一种递进的条件关系。

1、方法一:筛选

通过筛选销售人员和文创产品,我们可以知道答案是14400

2、方法二:SUMIFS函数

=SUMIFS(H2:H18,D2:D18,D3,E2:E18,E6)

对H2:H18的销售额求和,但需要D2:D18销售人员满足D3,即“琼英”,E2:E18文创产品满足E6,即“瑞晶镜”。

3、方法三:SUM函数

=SUM((D2:D18=D3)*(E2:E18=E6)*H2:H18) 按Ctrl+Shift+Enter计算

(D2:D18=D3)*(E2:E18=E6)会得到一个由0或1构成的数组,1就表示销售人员是“琼英”且琼英卖的是“瑞晶镜”,然后再和H2:H18相乘即可得到结果。琼英卖其他产品、其他人卖瑞晶镜都会被0抹去。

4、方法四:SUMPRODUCT函数

多参数写法:

=SUMPRODUCT((D2:D18=D3)*1,(E2:E18=E6)*1,H2:H18)

SUMPRODUCT函数实现三个数组的求积再求和。

单参数写法:

=SUMPRODUCT((D2:D18=D3)*(E2:E18=E6)*H2:H18)

乘号*实现三个数组的求积,最后SUMPRODUCT求和。

五、多条件求和的和

这其实是有两种情况,就是“和”在哪个条件上体现。

问:琼英和段莫言销售的瑞晶镜的销售额一共有多少?

问:琼英销售的瑞晶镜和青花翎的销售额一共有多少?

我们来解决第一问:琼英和段莫言销售的瑞晶镜的销售额一共有多少?

1、方法一:筛选

筛选两次:销售人员选择“琼英”、“段莫言”

文创产品选择“瑞晶镜”

答案为25200

2、方法二:SUMIFS函数

问:琼英和段莫言销售的瑞晶镜的销售额一共有多少?

答:琼英销售的瑞晶镜的销售额+段莫言销售的瑞晶镜的销售额

=SUMIFS(H2:H18,D2:D18,D3,E2:E18,E6)+SUMIFS(H2:H18,D2:D18,D9,E2:E18,E6)

3、方法三:SUM函数

分写:琼英销售的瑞晶镜的销售额+段莫言销售的瑞晶镜的销售额

=SUM((D2:D18=D3)*(E2:E18=E6)*(H2:H18))+SUM((D2:D18=D9)*(E2:E18=E6)*(H2:H18))

按下Ctrl+Shift+Enter键即可。

这里可以换种思路,考虑求满足“琼英”或“段莫言”,销售的瑞晶镜的销售额。

=SUM(((D2:D18=D3)+(D2:D18=D9))*(E2:E18=E6)*(H2:H18))

合写:

=SUM((D2:D18={"琼英","段莫言"})*(E2:E18=E6)*(H2:H18))

=SUM((D2:D18=IF({1,0},D3,D9))*(E2:E18=E6)*(H2:H18))

=SUM((D2:D18=CHOOSE({1,2},D3,D9))*(E2:E18=E6)*(H2:H18))

4、方法四:SUMPRODUCT函数

多参数分写累加、单参数分写累加:

=SUMPRODUCT((D2:D18=D3)*1,(E2:E18=E6)*1,H2:H18)+SUMPRODUCT((D2:D18=D9)*1,(E2:E18=E6)*1,H2:H18)

=SUMPRODUCT((D2:D18=D3)*(E2:E18=E6)*H2:H18)+SUMPRODUCT((D2:D18=D9)*(E2:E18=E6)*H2:H18)

这里可以换一种思路,问琼英和段莫言的销售的瑞晶镜的销售额一共有多少,可以理解为满足条件琼英或段莫言,销售的瑞晶镜的销售额一共有多少,公式可以写为:

=SUMPRODUCT((D2:D18=D3)+(D2:D18=D9),(E2:E18=E6)*1,H2:H18)

=SUMPRODUCT(((D2:D18=D3)+(D2:D18=D9))*(E2:E18=E6)*H2:H18)

多参数合写(不支持)

=SUMPRODUCT((D2:D18={"琼英","段莫言"})*1,(E2:E18=E6)*1,H2:H18) 报错#VALUE!

原因是数组尺寸不一致,SUMPRODUCT不支持

单参数合写:

=SUMPRODUCT((D2:D18={"琼英","段莫言"})*(E2:E18=E6)*H2:H18)

=SUMPRODUCT((D2:D18=IF({1,0},D3,D9))*(E2:E18=E6)*H2:H18)

=SUMPRODUCT((D2:D18=CHOOSE({1,2},D3,D9))*(E2:E18=E6)*H2:H18)

这么多种情况,这么多种写法,你学会了还是学废了?

好了,以上就是连载8的全部内容,相信你对SUMPRODUCT函数、数组有了更深入的认识,如果有不理解的可以先看前面的连载打牢基础。

点击头像或链接跳转:

穿越时间•Excel升级之路连载1:Office2010安装体验及个性设置

穿越时间•Excel升级之路连载2:打牢Excel 2010中的数据类型基础

穿越时间•Excel升级之路连载3:数据类型检测与相互转换技巧

穿越时间•Excel升级之路连载4:精通公式运算规则和字符比较

穿越时间•Excel升级之路连载5:数组的理想照进现实

穿越时间·Excel升级之路连载6:神级函数SUMPRODUCT的惊鸿一瞥

穿越时间Excel升级之路连载7:SUMPRODUCT函数挑战Excel条件计数

更多精彩,敬请关注,投币赞赏,感谢支持。

(原创连载,个人观点保留,禁止任何未经授权的非本人账号复制文章到其他平台发布)



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3