1职场实例
小伙伴们大家好,今天我们来讲解一个关于SUMPRODUCT函数解决指定月份汇总金额的职场真实案例。
如下图所示:
是一张每日的产品数量单价明细表格。A列为日期,B列为数量,C列为单价,数量乘以单价即为当天的总金额,但是总金额数据在数据源中是没有体现出来的。我们想要在F2单元格汇总出E2单元格内指定的月份下所有的金额之和。
2解题思路
解决这个问题我们主要是利用SUMPRODUCT函数的原理,配合MONTH函数判断日期值,一起实现最终效果。
=sumproduct(数组1,数组2,数组3, ……)
数组里面的相应元素进行相乘后,再将乘积求和。
常规运算过程如下演示:
=SUMPRODUCT({1;2;3},{4;5;6})
=1*4+2*5+3*6
=32
首先我们在F2单元格输入函数公式:
=SUMPRODUCT(B2:B9,C2:C9)
这样做,我们只是将所有日期下的数量与单价进行了相乘后并相加的运算,但是忽略了指定哪个日期。
SUMPRODUCT函数运算过程:
B2:B9={9;2;1;4;9;3;3;3}
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
=668
如果我们想要实现指定月份下的总金额汇总,就需要再在SUMPRODUCT函数内添加一个条件判断作为参数,这里用到了MONTH函数指定月份。
=SUMPRODUCT(MONTH(A2:A9)=E2,B2:B9,C2:C9)
用MONTH函数强制让其等于E2单元格的数值月份,这样就得到了一个由逻辑值TRUE和FALSE组成的判断结果数组:
MONTH(A2:A9)=E2
={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,这是固定规律。
(MONTH(A2:A9)=E2)*1
={1;1;0;0;0;1;0;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。