Excel情报局
职场联盟Excel
1 职场实例
多个条件“且”的含义是:
当所有条件都成立时,返回结果为true,数值表示为1,反之有任意一个不成立,则返回false,数值表示为0。
多个条件“或”的含义是:
当所有条件中有任意一个是成立的,返回结果为true,如果都不成立,才返回false。
这个问题的解决实际上已经超出了SUMIFS函数的使用范围了!
2
解题思路
=sumproduct(数组1,数组2,数组3, ……)
数组里面的相应元素进行相乘后,再将乘积求和。
常规运算过程如下演示:
=SUMPRODUCT({1;2;3},{4;5;6})
=1*4+2*5+3*6
=32
首先我们在F2单元格输入函数公式:
=(B2:B9="男")+(C2:C9>30)
其实这一步主要做的是一系列的逻辑判断,来获取相应的数组元素。
(B2:B9="男")
按下F9键,查看数组返回元素:
{TRUE;FALSE;TRUE;FALSE;TRUE;FALSE;FALSE;TRUE}
即该区域单元格如果等于“男”,即返回逻辑真值TRUE,否则返回逻辑假值FALSE。
我们选中公式部分:
(C2:C9>30)
按下F9键,查看数组返回元素:
{TRUE;FALSE;TRUE;FALSE;TRUE;FALSE;TRUE;FALSE}
即该区域单元格数值大于30的话,即返回逻辑真值TRUE,否则返回逻辑假值FALSE。
(B2:B9="男")+(C2:C9>30)两个逻辑判断进行相加:
{TRUE;FALSE;TRUE;FALSE;TRUE;FALSE;FALSE;TRUE}+{TRUE;FALSE;TRUE;FALSE;TRUE;FALSE;TRUE;FALSE}
={1;0;1;0;1;0;0;1}+{1;0;1;0;1;0;1;0}
={2;0;2;0;2;0;1;1}
我们发现新的数组结果:
={2;0;2;0;2;0;1;1}
如果两个条件都符合的话会返回数字2,即两个TRUE相加等于2;如果两个条件都不符合的话会返回数字0,即两个FALSE相加等于0;如果两个条件有其一符合的话会返回数字1,即一个TRUE加一个FALSE等于1。
即只要数组元素结果大于0的就符合“或”的要求。但是数组元素2不属于逻辑值范畴,所以我们可以将其转换为1即可。
这里我们使用的是SIGN函数:
=SIGN((B2:B9="男")+(C2:C9>30))
SIGN函数用于返回数字的符号。当数字大于0时返回1,等于0时返回0,小于0时返回-1。
所以SIGN函数的运算过程会如下演化:
=SIGN({2;0;2;0;2;0;1;1})
={1;0;1;0;1;0;1;1}
所以只要符合“或”条件的,数组元素全部转换成了固定的逻辑值数字“1”。
最后用SUMPRODUCT函数的常规思路就可以了:
=SUMPRODUCT(SIGN((B2:B9="男")+(C2:C9>30)),D2:D9)
将第2参数D2:D9展开,实质就是用数组引用了D列的销量数据:
{204;208;230;236;204;288;132;201}
=SUMPRODUCT({1;0;1;0;1;0;1;1},{204;208;230;236;204;288;132;201})
=1*204+0*208+1*230+0*236+1*204+0*288+1*132+1*201
联系客服