Hi,
Sum函数你会不会?如果你使用过Excel,你的答案一定是YES。而且,可能你还一脸不屑,sum可是Excel入门级函数,谁不会啊。
的确,说到Excel的sum函数,很多人都用过。初学Excel的你可能不会vlookup,但sum一定会。自从有了sum函数,你再也不用一个一个加数据了。
使用Excel很久的人,对sum函数也是不屑一顾。太简单了,不是?
好吧,今天我们来将sum函数多说几句,或许有些点需要我们重新去认识这个基础函数。
一、sum基础语法
基本语法:SUM(number1,[number2],...)
基本语法说明:从sum函数的参数可以看到,sum可以接多个求和的参数,参数可以是各种类型,只要是可以计算的就行,而且参数可以混合。例如,sum里面既可以有纯数值,也可以有单元格引用范围,等等。
二、sum的用法
用法1:基本求和
例如对基本工资、奖金、总工资进行分别求和:
- 单元格I3=SUM(D3:D12)
- 单元格I4=SUM(E3:E12)
- 单元格I5=SUM(F3:F12)
用法2:多个引用参数求不连续区域的和
例如求各业务员的销售业绩总和
单元格I3=SUM(B3:B6,D3:D6,F3:F6),这里用到了sum的多个参数,多个不连续的引用范围。
看起来,这样用是没有问题,那么还有没有更好的用法。来看看下面的用法:
为什么可以这样用,这是因为这里利用了sum函数会自动忽略文本,它只对数值进行求和。
这种用法更简单。
用法3:用法2的拓展,如何处理类型不匹配问题
来看看为什么下面结算结果是错误的?
为什么,结果不再是5747,而是5003?
还是案例2中的解释,sum会忽略文本值。注意到744这个值,虽然看起来是数字,其实是个文本(带三角形符号)。因此,结果自然就是排除了744这个值外的所有数值之和。
因此,这里有提到另外一个概念,我们在用sum求和时一定要了解求和的对象都是什么数据类型的,有没有错误的数据类型。有的话,我们就需要进行处理。
本例中,我们可以将744用选择性粘贴乘1将其转化为数值。
这里我们介绍另外一种用法:
I3单元格{=SUM(--B3:B6,--D3:D6,--F3:F6)}
如何操作的呢?先输入=SUM(--B3:B6,--D3:D6,--F3:F6),然后三键连发Ctrl+Shift+Enter,完成数组公式的输入。
如果没有三键连发,结果会是1577,即sum三个参数的第一个值求和。
这里为什么用--,所谓负负得正,我们这里是用了两个负号去强制将文本型数字转化为数值。用F9显示计算结果,你会看到整个过程:
这里,我们用到了一个数组的概念。所谓的数组就是不止一个数在计算,类似于矩阵,很多数在参与计算。运输数组公式,我们需要三键连发,即输入公式后Ctrl+Shift+Enter,完成数组公式的输入。
数组是个比较难以理解的东西,后面我们还会遇到,多理解几次就可以了。其实就是一组数反复在参与各种运算。
用法4:累计整数求和
例如:求1+2+…+100
这个看起来似乎也很简单,大不了在1列中输入1到100,然后用sum求和就可以了。类似于这样:
好吧,还有没有更简单的方法。有,来看看下面的极简计算方法:
D3单元格{=SUM(ROW(1:100))}。这里先用row函数构造了1个1到100的序列数,即row(1:100)的结果就是1,2,3,…100,然后外面包一个sum函数进行数组运算,瞬间即得到了我们要的结果。由此可见,在某些时候,数组的功能太强大了。
用法5: sum+indirect+row
案例4的扩展,求和1+2+…n
题目的意思是即给定一个n值,就和1+2+…n
先看动图结果:
这里我们用到了indirect,我们用”1:”&单元格引用的形式,构造了一个动态的引用,n可以是5,也可以是100。Indirect的意思就是将一个文本转化成一个单元格引用。
外层同样是row,sum,然后三键连发运行数组公式。
用法6:sum+if进行条件求和
本例是需要对超过800的业绩进行求和:
当然,你学过sumif,自然就会这样用:=SUMIF(A3:F6,">800")
本例中,我们还是用if+sum数组公式来进行计算:
I3单元格数组公式{=SUM(IF(A3:F6>800,A3:F6,0))},即先用if去判断每个单元格是否大于800,是就是其本身,否就是0,然后外层用sum将矩阵结果求和出来。
当然,和sumif语法比较起来,数组型的公式看起来稍显复杂,而且难以理解。我们这里不做过多的解释,两种用法各有优势。尤其是在需要做复杂矩阵运算的时候,数组公式自有其用处。
用法7:sum求和含错误值的范围
如果求和的范围中含有错误值的话,sum函数是不会忽略错误值的,它会认为将错误值和正常值求和没有意义,所以它会返回错误的值。
那么我们如何进行处置呢?自然第一步就是要将错误值处理。
这里我们不去讲常规的替换操作,我们用iferror函数结合sum函数进行处理。
如何处理呢?
I3公式{=SUM(IFERROR(A3:F6,0))},也是一个数组公式,即先用iferror去判断是否有错误值,有的话赋值0,外层再用sum进行求和处理。
是不是很简单就处理了。
用法8:sum+动态引用计算累计求和
我们有时候需求进行累计求和,看看一般的做法:先排序,然后再计算累计求和。
这种计算方式很简单,第一个累计值等于其自己,第二累计值等于其自己+第一个累计值,公式复制,以此类推。但是,这里需要写两个简单的公式。
而我们可以用sum结合混合引用来进行累计求和。即E2单元格=SUM(D$2:D2)。这里固定了引用的左上角单元格的行号,这样在往行上复制公式的时候,引用的下标在不断的变化,从而使得sum的计算范围,先是只有第一个值,然后有两个值,以此类推。最终实现了sum的累计求和。
三、总结
Sum函数看似非常简单,但当我们深入下去的时候就会发现很多有意思的细节。这些细节决定了我们能否在工作中提升我们的效率。细节决定成败。我们学习一个函数,一定是对其各种细节、各种用法了然于胸。
每当我们遇到合适的应用场景的时候,我们才能信手拈来,否则就是狗急跳墙了。
Sum函数就是这样一种,看似简单,深入下去,才能发现其博大精深。
以上,是今日分享的内容。
我是华哥。每日精进,不负光阴韶华。
赠人玫瑰,手留余香。欢迎评论、点赞、关注,转发。