Excel 函数学习01-条件求和函数SUMIF(S)

除了最基础的SUM函数和IF函数,我们从SUMIF函数开始学起。SUM是求和的意思,IF是如果的意思,所以SUMIF的意思就是如果条件成立,咱们就求和吧。

在函数的世界里,SUMIF是大明星级的人物,属于函数新人必须熟练掌握的五大函数之一,号称五大天王,其主要功能是单条件求和……哦~你问我函数五大天王是哪五个?SUM求和、IF判断、SUMUF条件求和、COUNTIF条件计数、VLOOKUP条件查询。

本来SUMIF小日子过的很滋润,但万万没想到在他出生后的第四年,微软爸爸给他生了个同父异母的兄弟——简单说就是生了个二胎,取名叫SUMIFS。SUMIFS骨骼惊奇、天赋异禀,SUMIF会的事儿它都会,SUMIF不会的,比如并且关系的多条件求和,它也会。如此一来,老大SUMIF的待遇就有点儿不如往昔了。



但不管怎么说,毕竟长幼有序,面子还是要给的,而且SUMIFS和SUMIF的结构极其相似,学会了SUMIF,自然也就会了SUMIFS,所以我们今天还是从简单的SUMIF函数聊起。

2,SUMIF的官方语法

SUMIF的官方语法简历如下:

=SUMIF(range,criteria,sum_range)

说人话就是:

=SUMIF(条件区域☞在哪找?,条件☞找谁呀?,求和区域☞在哪求和?)

一共有三个参数,第三个参数是可选的。如果省略第3参数,则默认第一参数条件区域即为求和区域。

举个简单的小栗子。


如上图所示,为某公司工资表,A列是班组名,B列是人名,C列是工资,数据虚拟。

——请问二组人员的工资合计有多少?

公式如下:

=SUMIF(A:A,"二组",C:C)

在哪找?在A列,所以条件区域是A列,找谁呀?找二组,所以查询条件是二组,在哪求和?在C列,所以求和区域是C列。



二组”是文本常量,所以放在公式中必须使用半角双引号包括起来。
公式的意思是,去,SUMIF,你赶紧给我到A列找二组,找到了就把C列对应的工资累加求和……

于是SUMIF就屁颠屁颠的去了

最后计算结果是:23679



再举个小例子。

我问你,C列工资大于7000的,合计是多少?

在哪找?在C列。找谁呀?>7000的,在哪求和?在C列。

公式:

=SUMIF(C:C,">7000",C:C)

计算结果:51751



需要说明的是,>7000是由运算符和数值构成的字符串,在公式中必须使用半角双引号包起来。

公式木有问题。当条件区域和求和区域为同一区域时,求和区域可以省略。

所以公式也可以简化为:

=SUMIF(C:C,">7000")

3 SUMIF的运算过程

只有懂得它的运算过程,才能更好的理解和掌握它的用法,避免使用错误,扩展应用技巧。

比如说,我们设置的查找区域是A:A,会不会影响SUMIF的计算效率?要知道A列有一百多万个单元格,SUMIF一口气计算一百多万个单元格会不会很辛苦?

不会。

SUMIF根本就不会计算A列整列的数据。

1)我们就以公式=SUMIF(A:A,"二组",C:C)为例,讲一下SUMIF的运算过程。

我们设定的规则是SUMIF去A列找“二组”,找到了就把C列对应的工资累加求和。

SUMIF接到任务的第一步是……修正查询范围。

它会将我们设置的查询范围A列,和A列已使用的单元格区域做一个交集运算,获取最终的运算范围。

比如该例中,A列已使用的单元格区域是A1:A10,和A列的交集也就是A1:A10,SUMIF便只会在这个范围内进行运算,至于A11:A1048576,它是不管的。

如果我们设置的查询范围是A3:A5呢,和A1:10做交集运算,产生的结果是A3:A5,SUMIF便只会在这个范围内进行运算,至于A1:A2和A11:A1048576也是不管的。

SUMIF是不是很聪明?没办法,老大不聪明会挨揍。

……

2)

也许你会好奇,SUMIF怎么知道A4单元格二组的工资就是C4单元格的?

这就是SUMIF运算过程的第二步,通过我们设置的查找范围的首个单元格,和我们设置的求和范围的首个单元格,之间的位置关系,构建关联关系。

这句话听起来有点儿绕口,其实很简单。

我们设置的查询范围是A列,A列的首个单元格是A1。我们设置的求和范围是C列,C列的首个单元格是C1。A1和C1是同行隔一列的相对关系。A1对应C1,依次类推,A2也就对应C2、A3也就对应C3……

如果我们将公式设置为:

=SUMIF(A2:A10,"二组",C1:C10)

你猜会发生什么?

公式会计算出结果,但会算错。

A2:A10的首个单元格是A2,C1:C10的首个单元格是C1,因此A2对应C1,以此类推,A3对应C2,A4对应C3……乱套了,全乱套了,整个晋西北全乱成一锅粥了不是?
这也是新手经常犯的错误之一,条件区域和求和区域对应位置错位

3)

根据相对位置,构建了条件区域和求和区域的关联关系后,SUMIF就开始正式工作了。

以本例而言,SUMIF从A1开始往下遍历数据。

A1不是二组,过。

A2不是二组,过。

A3是二组,停,记一下,把A3对应的C3的工资,计入总工资,目前总工资只有一笔,也就是9000。

A4是二组,停,记一下,把A4对应的C4单元格的工资,也计入总工资,于是总工资等于9000+ 6789,也就是15789.

……

一直到A10单元格,OK,查询区域都查完了,SUMIF就将最终结果显示给我们看。

就这么回事。

……

但这中间可能会发生一些问题。

比如说,公式:

=SUMIF(A1:A10,"二组",B1:B5)

条件区域是A1:A10,结果区域是B1:B5,求和区域比条件区域小了很多,你猜,会发生什么呢?

再比如说,公式:

=SUMIF(A1:A10,"二组",B1:B500)

条件区域是A1:A10,结果区域是B1:B500,结果区域比条件区域大了很多,你猜,又会发生什么呢?

其实,什么都不会发生。

对于SUMIF来说,重要的仅仅只是求和区域的首个单元格,至于其他,它会按照多退少补的原则自动进行增减。换句话说就是,你有,我就去拿,你没有,我就自己找,你多了,我不要。

以公式:=SUMIF(A1:A10,"二组",C1:C5) 为例。

当SUMIF查询到A6单元格时,已经超过了求和区域的范围,没关系,根据A1对C1的关联关系,SUMIF自己可以推算出A6对应的求和单元格就是C6,于是自己就屁颠屁颠的跑到C6那去了。

以公式:=SUMIF(A1:A10,"二组",B1:B500) 为例。

当SUMIF查询到A10单元格时,条件区域已经全部查找完了,但求和区域还剩下很多。管他呢,没有了条件区域,求和区域剩下再多也没必要看啊,于是SUMIF看也不看剩下的求和区域一眼,就把计算结果呈报了。

你瞧,SUMIF是不是一个很懂事的好孩子?没办法,老大不懂事会挨揍。

有朋友会想,照你这么说,公式:

=SUMIF(A1:A10,"二组",C1:C10)

完全可以写成:

=SUMIF(A1:A10,"二组",C1)

没错!这样写是没有大问题的,公式可以正常运算,并得出正确结果,偶尔在同事面前装逼一下也很酷~

小问题是不方便公式阅读,且计算效率偏差。毕竟让SUMIF自己去重新找条件区域的单元格,也是要花费时间和内存的。

4,

我们在之前的篇章说过,每个函数都有自己的个性,有它喜欢,也有它不喜欢的事儿。SUMIF作为五大天王,当然要响应号召,带头表帅。

首先,SUMIF不喜欢文本型数值,求和区域的文本值,SUMIF是忽略不计的。如下图所示,由于C列的工资为文本型数值(左上角有绿帽子),因此SUMIF的计算结果为0。


其次,SUMIF极度厌恶错误值,当符合条件的求和区域出现错误值时,如果未加特殊处理,它的计算结果会直接返回错误值。



SUMIF的第1、3参数只接受单元格引用,绝不接受数组、常量等其他形式。


如上图所示的数据表,A列是日期,D列是工资,请问3月份一共发放了多少工资?

有的朋友可能会将公式编写如下:

=SUMIF(MONTH(A:A),3,D:D)

公式使用了MONTH函数计算A列的月份,作为SUMIF的条件区域,但公式输入后,会收到系统的弹幕警告,该条公式并不会被Excel执行。这便是由于SUMIF的第一参数绝不接受除了单元格引用以外数据的缘故。

再举个常见的小例子。


如上图所示,计算部门为“设备部”,同时,班组为“二组”的人员工资合计,有朋友可能会将公式写为:

=SUMIF(IF(A1:A10="设备部",B1:B10),"二组",D1:D10)

这条公式可以执行,但会返回错误值,究其缘故,还是SUMIF的第1参数IF(A1:A10="设备部",B1:B10)计算结果返回的是一个内存数组,而SUMIF第1参数绝不接受数组。

事实上,对于这类“并且”关系的多条件求和问题,我们可以召唤SUMIF的弟弟SUMIFS。
小贴士:

可能会有朋友好奇,为什么同样第一参数是数组,第1条公式MONTH不被Excel承认和运行,第2条公式IF就可以被Excel运行,只是结果返回了错误值?

我可以做出解释,不过在解释之前还是提前说一下,解释部分能懂就懂,不懂就算,这并不重要,重要的是记得SUMIF函数的第1、3参数只支持单元格引用就OK了。

Excel知道MONTH函数的计算结果必然不会是单元格引用,而IF函数的计算结果可能是数组,也可能是单元格引用,在没运算之前,Excel也不知道IF函数到底返回的是啥。比如,公式:=IF(1,D1:D10,A1:A10),这条公式返回的是D1:D10单元格区域,便属于单元格引用,也就是说下面这条公式是成立的,它可以计算出D1:D10单元格区域工资大于2500的合计值。

=SUMIF(IF(1,D1:D10,A1:A10),">2500")

这就好比有的人看一眼就知道是个骗子,所以Excel不和她交往,但有的人一眼看不出来是不是骗子,那Excel就先和她交往,一交往才知道她也是个骗子,那就返回错误值拜拜了。

5 SUMIFS

SUMIFS是SUMIF的弟弟,专门用来处理“并且”关系的多条件求和问题。其官方简历如下:

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

说人话就是:

=SUMIFS(求和区域,条件区域1,条件1,[条件区域2],[条件2],…[条件区域127],[条件127])

和哥哥SUMIF不同的是,SUMIFS的第一参数是求和区域,第二参数是条件区域,第三参数是条件。SUMIFS最多支持设置127个“并且”关系的条件区域和条件,不过,除了第一对区域/条件外,其余均是可选的。

比如以下公式可以计算D列工资大于2000的总金额。

=SUMIFS(D:D,D:D,">2000")

假如我们使用SUMIFS函数计算部门为设备部,班组为二组的人员的合计工资,公式可以写为:

=SUMIFS(D:D,A:A,"设备部",B:B,"二组")

在哪求和?在D列!条件1是什么?A列等于"设备部"!条件2是什么?B列等于"二组"!

SUMIFS是SUMIF的弟弟,专门用来处理“并且”关系的多条件求和问题。其官方简历如下:

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

说人话就是:

=SUMIFS(求和区域,条件区域1,条件1,[条件区域2],[条件2],…[条件区域127],[条件127])

和哥哥SUMIF不同的是,SUMIFS的第一参数是求和区域,第二参数是条件区域,第三参数是条件。SUMIFS最多支持设置127个“并且”关系的条件区域和条件,不过,除了第一对区域/条件外,其余均是可选的。

比如以下公式可以计算D列工资大于2000的总金额。

=SUMIFS(D:D,D:D,">2000")

假如我们使用SUMIFS函数计算部门为设备部,班组为二组的人员的合计工资,公式可以写为:

=SUMIFS(D:D,A:A,"设备部",B:B,"二组")

在哪求和?在D列!条件1是什么?A列等于"常用部"!条件2是什么?B列等于"二组"!




于是得出计算结果:23679

应当了解的是,SUMIFS不但长的和SUMIF很像,性格也简直和他哥一模一样,忽略求和区域出现的文本型数值,极厌恶符合条件的求和区域出现错误值,条件区域和求和区域绝不接受除了单元格引用以外的任何数据形式。

不过,SUMIFS并没有SUMIF那么聪明,它的求和区域不会根据条件区域按照多退少补的原则自动增减,它要求条件区域和求和区域的尺寸必须一样大小,否则就返回错误值。

以下公式都会返回错误值:#VALUE!

=SUMIFS(D1:D10,B1:B5,"二组")

=SUMIFS(D1:D5,B1:B10,"二组")

=SUMIFS(D1,B1:B10,"二组")

很明显,开发SUMIFS函数的微软工程师和开发SUMIF的不是同一批人,前者完全忘记了SUMIF的聪明之处。好吧,随你怎么想吧,谁知道SUMIFS是SUMIF同父异母还是同母异父的亲兄弟呢~

……

小结:

虽然SUMIFS既能处理多条件求和,也能处理单条件求和,但一方面它不够聪明,另一方面绝大部分人还是习惯了SUMIF函数,所以,通常单条件求和我们还是使用SUMIF,只有“并且”关系的多条件求和才会使用SUMIFS。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343