小伙伴们大家好,今天我们来讲解一个关于SUMPRODUCT函数解决指定月份汇总金额的职场真实案例。
是一张每日的产品数量单价明细表格。A列为日期,B列为数量,C列为单价,数量乘以单价即为当天的总金额,但是总金额数据在数据源中是没有体现出来的。我们想要在F2单元格汇总出E2单元格内指定的月份下所有的金额之和。解决这个问题我们主要是利用SUMPRODUCT函数的原理,配合MONTH函数判断日期值,一起实现最终效果。SUMPRODUCT函数在给定的几组数组中,把数组间对应的元素相乘,最后返回乘积之和。
SUMPRODUCT常规函数公式:
=sumproduct(数组1,数组2,数组3, ……)
数组里面的相应元素进行相乘后,再将乘积求和。
常规运算过程如下演示:
=SUMPRODUCT({1;2;3},{4;5;6})
=1*4+2*5+3*6
=32
下面我们就来看一下具体操作方法。
这样做,我们只是将所有日期下的数量与单价进行了相乘后并相加的运算,但是忽略了指定哪个日期。
C2:C9={10;15;15;20;32;10;15;30}用两个区域数组值作为SUMPRODUCT函数的两个参数,用逗号隔开:=SUMPRODUCT({9;2;1;4;9;3;3;3},{10;15;15;20;32;10;15;30})数组里面的相应元素执行相乘后,再将乘积求和的命令:=9*10+2*15+1*15+4*20+9*32+3*10+3*15+3*30
如果我们想要实现指定月份下的总金额汇总,就需要再在SUMPRODUCT函数内添加一个条件判断作为参数,这里用到了MONTH函数指定月份。=SUMPRODUCT(MONTH(A2:A9)=E2,B2:B9,C2:C9)用MONTH函数强制让其等于E2单元格的数值月份,这样就得到了一个由逻辑值TRUE和FALSE组成的判断结果数组:={TRUE;TRUE;FALSE;FALSE;FALSE;TRUE;FALSE;FALSE}也就是说如果A2:A9单元格内的月份等于1月的话,返回逻辑值真值,即TRUE;如果A2:A9单元格内的月份不等于1月的话,返回逻辑值假值,即FALSE。但是我们发现完善公式后返回的结果是错误的,这是为什么呢?
原因就是由MONTH函数产生的由逻辑值TRUE和FALSE组成的数组元素并不能直接和后面的常量数组产生运算,需要对MONTH函数部分整体乘以1:=SUMPRODUCT((MONTH(A2:A9)=E2)*1,B2:B9,C2:C9)MONTH函数部分整体乘以1后,变成由1和0组成的新数组,在Excel中,TRUE*1=1,FALSE*1=0,这是固定规律。这样SUMPRODUCT函数再次重新执行相乘后,再将乘积求和的命令:=SUMPRODUCT({1;1;0;0;0;1;0;0},{9;2;1;4;9;3;3;3},{10;15;15;20;32;10;15;30})得到指定的月份1月下的总金额结果150。