我们平常使用sum函数,只是简单的求和,实际上sum函数可以实现sumif/sumifs/sumproduct函数的所有功能,sum函数配合数组也可以实现多条件求和计数,下面我们就来演示一下。

特别注意:当sum对数组进行求和的时候一定要按CTRL+SHIFT+ENTER,而不是ENTER

案例1:实现sumproduct的功能,一个公式求出总销量




mysql sum 为什么都要group by mysql中sum怎么用_mysql sum按条件求和


解读:

公式:=SUMPRODUCT(D3:D11*E3:E11)

公式:=SUM(D3:D11*E3:E11)

大家可以看到,我们要求总销量,平常是使用sumproduct函数,然后我们求出了结果,接着我们把sumproduct更改为sum,敲击回车,发现结果为2000,当我们选中公式,按CTRL+SHIFT+ENTER以后,结果就显示正常了,这是为什么呢? 我们发现公式变成了{=SUM(D3:D11*E3:E11)}的形式

我们来仔细看下:


mysql sum 为什么都要group by mysql中sum怎么用_数组_02


我们选中 D3:D11*E3:E11 区域,按F9,公式变为=SUM({2000;6000;3000;250;480;80;1000;4000;3000}),而{2000;6000;3000;250;480;80;1000;4000;3000}是一个数值,我们现在是使用sum函数对数组进行求和,数组的第一个值为 第一行数量乘以单价,第二值为 第二行数量乘以单价,依次类推。

案例2:代替sumif实现单条件求和


mysql sum 为什么都要group by mysql中sum怎么用_数组_03


公式解读:=SUM((MONTH(A3:A11)=7)*D3:D11*E3:E11)

MONTH(A3:A11)=7 为求日期的月份,如果月份是7月,则返回7 ,7=7 返回true,在excel中布尔值和数值计算,true为1,false为0 ,所以第一行数据为0*10*200=0,如果为7月份的,比如最后一条数据,则为1*10*300,不满足7月的都为false,所以乘积总为0,也就是把不满足条件的都排除掉了。

案例3:代替sumifs实现多条件求和


mysql sum 为什么都要group by mysql中sum怎么用_数据_04


函数解读:

=SUM((MONTH(A3:A11)=5)*(C3:C11="发电机")*D3:D11*E3:E11)

和案列2一样,只是多增加了一个C3:C11="发电机"的条件

案例4:实现计数


mysql sum 为什么都要group by mysql中sum怎么用_数组_05


函数解读:=SUM(D3:D11>10)

我们发现结果为0,那是为什么呢,在sum中,一个布尔表达式,无论是true或者false不和其他数值参与运算的话,默认就是0,所以结果才为0。我们将公式改为

=SUM((D3:D11>10)*1)

再来看下结果:


mysql sum 为什么都要group by mysql中sum怎么用_数组_06


可以看到结果显示正确了,大家一定要注意,在sumproduct函数中也有这样的情况,我们乘以1,就是把布尔值转化为数值1或者0,然后再运算。