Sumproduct函数,用于返回相应数组或区域乘积的和,Sum代表求和,Product代表乘积。尽管该函数定义简单,但根据对数组或区域的灵活组合,可由此衍生出很多实用性用法。
语法:Sumproduct(array1,array2,array3,...)
Array1,array2,array3,...为1到30个数组,其相应元素需要进行相乘并求和。
第一部分:在条件计数中的应用
当数组仅为单个时,将返回该区域内一系列数值加和;当数组仅为单个条件数组时,将返回一组内存逻辑值,并对非数值型的数组元素作“0”值处理,即将“true”和“false”形式逻辑值归为零值。因此,为了计算满足条件数组的个数,需要把逻辑值转换为数值并让其参加代数运算,应强制逻辑值发生四则运算以获得数字型数值,用“--”、“*1”、“+∕-0”等等。例如,= True*1,结果为1;= False*1,结果为0;=--True,结果为1。
当条件数组两个以上时,用“()”将数组条件分开,并用“*”进行连接,以表示数组条件“同时成立”关系。由于逻辑值间已发生运算关系,此处不需增加四则运算法则。
也就是说,用“*”连接条件数组,在不增加“求和区域”时,该函数可用于单或多条件计数。
第二部分:在快速求和中的应用
由于函数具有“非数值型的数组元素作0值处理”的特性,因此,Sumproduct函数又有两种写法,分别为Sumproduct(array1,array2)和Sumproduct(array1*array2)。若计算元素均为数值,两种写法都可计算出正确结果,否则Sumproduct(array1*array2)将返回错误值“#VALUE!”,从而导致计数出错。但采用Sumproduct(array1*array2)时,文本将被视为0值处理,因而不影响对其他元素的计算。
第三部分:在条件求和中的应用
函数写法为Sumproduct(条件区域,求和区域)
下面例题:计算公司本年度各月借贷总额,需要分别计算三个部门的借方、贷方合计。采用公式=SUMPRODUCT(($B$2:$G$2=$H$2)*(B3:G3))。先用条件区域确定逻辑值数据,再乘以求和区域。
下面的处理方式得到的结果也一样。如果使用“,”代替“*”,必需将逻辑值数组转换为数值。
第四部分:在加权汇总中的应用
其实,加权汇总运算是Sumproduct函数用法的延伸。加权行必需绝对引用,从而得到相应数值。
案例:根据评比项权重与所得分值,计算出总分。
公式:=Sumproduct($B$2:$E$2,B3:E3)
第五部分:在查找及排名中的应用
利用该函数也可以在一组数中进行排序。思路如下:首先计算出满足条件的逻辑值数组,将其转换为数值,再加上1,下拉,便是该条件在某一数值内的顺序。
案例:计算各个名字分数的排列顺序。公式:=Sumproduct(--($E$19:$E$24>E19))+1,由于引用区域不变,所以必需绝对引用,否则会出错。