我们经常需要基于一个或者多个条件进行求和。例如,下面的数组公式返回名为Data范围中正数(不包含负数)的和:
{=SUM(IF(Data>O,Data))}
IF函数创建一个新数组,它只包含正数和False值。这个数组传递给SUM函数,该函数忽略False值并且返回正数之和。Data范围可以包含任何数目的行和列。
对于本例,也可以使用Excel的SUMIF函数。下面的公式不是一个数组公式,它返回与前面数组公式相同的结果:
=SUMIF(Data,">0")
然而,对多项条件使用SUMIF会有更多的诀窍。例如,如果我们希望只对大于0和小于等于5的数值求和,可以使用这样的非数组公式:
=SUMIF(data,">O",data)-SUMIF(data,">5",data)
这个公式先对大于零的数求和,然后减去大于5的数之和。这也许会引起混淆。
下面的数组公式执行了相同的计算:
{=SUM((Data>O)*(Data<=5)*Data)}
这个公式也有一个限制,如果Data范围包含一个或者多个非数值单元格的话,它会返回个错误。
也可以写出一个数组公式,它综合了使用OR条件的标准。例如,求小于0或者大于5的数值之利,使用下面的数组公式:
{=SUM(IF((Data<O)+(Data>5),Data))}