你大概不知道的SUMIF函数用法和其底层原理讲解

作为表格的元老函数,估计大家对这个函数已经非常非常熟悉了,但我相信有一个用法是很多人没有掌握理解的;甚至是没见过的。

下面举例两个相关题目,各位可以稍作停顿,思考去解答一下

--------------------------------思考分割线-----------------------------------------

回到sumif函数本身,软件给出的官方使用提示如下图,即在指定的【区域】内,对满足特定【条件】的数值进行求和操作。

而我们知道,满足条件的标识是逻辑值TRUE,不满足条件的标识是逻辑值FALSE。

所以,函数的实现原理过程为:将【条件】应用于【区域】的所有元素后,得到TRUE和FALSE的结果表达;然后把逻辑值为TRUE的位置,对应到求和区域的位置,最后计算这些位置上的所有数值之和。

说得比较难懂,下面通过例子说明:求下面数据<10的数的总和;

题目比较简单,大家应该不难解答,其中公式之一:SUMIF(U5:Y15,"<10",U5:Y15)

下面将该公式代入上述的原理一步步说明:

  1. Sumif函数将条件(<10)应用在条件区域(U5:Y15)后,得到下图对应TRUE和FALSE的逻辑值结果,(留意TRUE的位置)

2、然后以求和区域左上角单元格为基准,把整个结果中的TRUE和FALSE映射到【求和区域】中,TRUE所对应的数字之和即为结果,这就是该函数求和的原理。

可以看到,TRUE对应的数字分别为5-5-5-5-5-5-5-5-5-5,所以此题的最终结果是50.

下面,是该函数的一些使用要点:

  1. 【求和区域】可以省略,省略时,求和区域和条件区域相同。所以公式可简写为:SUMIF(U5:Y15,"<10")

  1. 在【求和区域】不省略的情况下,函数会把得到的逻辑值区域左上角对应求和区域的左上角其他单元格正常拓展,用来确定true和false对应的每个值。(即使求和区域含有锁定符合$也同样无效)----此要点非常重要!!

所以公式也可改写为:SUMIF(U5:Y15,"<10",U5);SUMIF(U5:Y15,"<10",U5:V6)

下面我把求和区域稍作修改,左上角单元格不再选为U5,改为了W5!!这时逻辑值中true和false所对应的数值发生了改变,true对应的分别为:5-43-0-5-0-5-0-5-12-0,所以结果就变为了75。

到这里,估计大家对这个函数的执行过程理解得够清晰了,其使用的核心就是利用条件创建true和false的区域,再把true对应到想要的求和区域中。

---------------------------------题目讲解分割线-------------------------------------

那么,了解原理后,我们回到最开始的两个题目

题1解题思路:想要计算产品1的总销量,就需要把每一个小销量求出来,通过观察,若将产品列向右移动一列,便会与相应的销量一一对应,因此,我只需对产品列针对条件得到的逻辑值,放在产品列的右侧一列即可得到满足条件的销量,详细的思路看下面图示:

1、把含有产品名称的单元格区域和“产品1”做等值计算,即B6:H15="产品1”,会得到一个全是逻辑值的区域

2、当把这个区域整体移动到C6去,会发现TRUE对应的刚刚好为产品1的销量

  1. 所以,最后得到的公式可为:SUMIF(B6:H15,L6,C6:I15),也可简写为SUMIF(B6:H15,L6,C6),求解结果为278

因为区域和求和区域存在错位,此方法常叫错列求和,考虑到错行同样适用,所以我偏向叫它错位求和

同样的,题目2的解题思路也基本一致

想要得到每行最后的一个数值,那可以利用最后一个数值后一位为空值作为条件,去创建含有true和false逻辑值的区域,然后将其整体左移一个单位,TRUE则会对应到每一个最后值

最终的公式求解为

SUMIF(W6:AC15,"",V6:AB15);可简写为:SUMIF(W6:AC15,"",V6)

题目中还有一个小小的拓展:计算10个产品最后两次调价总和,原理一样就不多说了

公式为=SUMIF(W6:AD15,"",U6:AB15),可简写为=SUMIF(W6:AD15,"",U6)

到此,SUMIF函数的底层原理已经讲解完成。举一反三,对于后来发布的SUMIFS函数,其原理也如出一辙,不过在sumif函数基础上多一层的关系,这里就不展开叙述了。

由于文笔不好,本文可能表达不够清晰,大家可以看着图示去理解,如有不懂可在评论区留言;文中如有错误地方,也欢迎各位指出!

广东省
浏览 395
1
27
分享
27 +1
15
1 +1
全部评论 15
 
企业用户_404385561
牛逼
· 陕西省
回复
 
亂雲飛渡
点赞学习
· 广东省
回复
 
寻残梦
666
· 广东省
回复
 
赵二
学到啦
· 辽宁省
1
回复
赵二
· 辽宁省
1
回复
 
EnterZero
底层逻辑一直明白,这种错位调用 第一次见 ,涨见识了
· 四川省
回复
 
自愈
· 新疆
1
回复
 
天高云淡
很好
· 湖北省
1
回复
天高云淡
是的
· 湖北省
回复
 
王禹成
王禹成

创作者俱乐部成员

眼睛看会了,还没用过这玩法
· 浙江省
回复
 
HC.旋
会了会了
· 福建省
回复
 
清华学弟任泽岩
清华学弟任泽岩

创作者俱乐部成员

特别好,就想看这种讲底层逻辑的帖子
· 吉林省
1
回复
纯真少年
知道原理后会理解得更加透彻
· 广东省
1
回复
 
saAE86
打卡
· 广东省
回复
 
幸福春
透彻!
· 山东省
回复