SUMPRODUCT函数,对日期判断的特殊处理!
1职场实例
小伙伴们大家好,今天我们来继续讲解Excel使用中非常实用且强大的函数:SUMPRODUCT函数,这一次我们来讲解一下SUMPRODUCT函数遇到日期条件判断时的特殊处理要求,以应对日常工作上的不时之需。
如下图所示:
A1:B9为日期销量表,我们想要统计出10月16日以后的销量之和。本例中,10月16日以后得到销量分别是100和200,最后求和结果为100+200=300。
2解题思路
我们在SUMPRODUCT函数的实际书写过程中,尤其是对日期相关的判断求和运算过程中,最容易出现的问题就是对日期数据的特殊处理,下面我们就来看一下具体操作方法。
SUMPRODUCT函数在给定的几组数组中,把数组间对应的元素相乘,最后返回乘积之和。
SUMPRODUCT常规函数公式:
=sumproduct(数组1,数组2,数组3, ……)
数组里面的相应元素进行相乘后,再将乘积求和。
常规运算过程如下演示:
=SUMPRODUCT({1;2;3},{4;5;6})
=1*4+2*5+3*6
=32
对于没有对SUMPRODUCT函数使用经验的小伙伴们,一般会这样输入函数:
=SUMPRODUCT(A2:A9>2023/10/16,B2:B9)
但是我们发现,虽然自我感觉语法正确,但是返回的确实错误的结果0。
我们对日期的这一判断部分选中后:
A2:A9>2023/10/16
按下F9键查看数组返回结果:
{TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE}
我们发现数组内全部8个元素均为TRUE,正常情况下前6个日期不符合要求,应该是FALSE才对,故这种逻辑写法是不正确的。
我们都知道日期格式的数据在Excel中实质也是数值。
所以我们用VALUE函数将日期格式的数据转换为数值即可。即将A2:A9>2023/10/16部分嵌套上VALUE即可。
公式完善为后变为:
=SUMPRODUCT(A2:A9>VALUE("2023/10/16"),B2:B9)
但是我们发现,虽然自我感觉语法也是正确的,但是返回的依旧是错误的结果0。
我们对日期的这一判断部分选中后:
A2:A9>VALUE("2023/10/16")
按下F9键查看数组返回结果:
{FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;TRUE;TRUE}
我们发现数组内前6个日期不符合要求,返回的结果为FALSE,第7个和第8个日期符合要求,返回的结果为TRUE。故这种逻辑虽然正确,但是还有不足的地方。
在Excel中,逻辑值TRUE可以用数字1代表;逻辑值FALSE可以用数字0代表;所以我们需要将数组逻辑值TRUE和FALSE转换为数值才能与SUMPRODUCT的第2参数B2:B9,实现运算,显示正常值。
所以我们只需要在A2:A9>VALUE("2023/10/16")前面加上双负号,实现减负运算即可。
公式完善后变为:
=SUMPRODUCT(--(A2:A9>VALUE("2023/10/16")),B2:B9)
我们对日期的这一判断部分选中后:
--(A2:A9>VALUE("2023/10/16"))
按下F9键查看数组返回结果:
{0;0;0;0;0;0;1;1}
因为B2:B9会依次引用B列销量数据作为新的数组:
{204;208;230;236;204;288;100;200}
依据SUMPRODUCT函数的把数组间对应的元素相乘,最后返回乘积之和的原理:
={0;0;0;0;0;0;1;1}*{204;208;230;236;204;288;100;200}
=0*204+0*208+0*230+0*236+0*204+0*288+1*100+1*200
=300