对于sumproduct使用过程中*1的解释说明sumproduct函数,逗号分割的各个参数必须为数字型数据,如果是判断的结果逻辑值,就要乘1转换为数字。如果不用逗号,直接用*号连接,就相当于乘法运算,就不必添加*1。数学函数SUMPRODUCT应用实例一、基本功能1.函数SUMPRODUCT的功能返回相应的区域或数组乘积的和。2.基本格式SUMPRODUCT(数据1,数据2,……,数据30)3.示例数据表A列B列C列D列E列数据1数据2数据3数据4数据52341210556520978#N/A307279KL16282⑴基本计算①区域计算要求:计算A、B、C三列对应数据乘积的和。公式:=SUMPRODUCT(A2:A6,B2:B6,C2:C6)计算方式:=A2*B2*C2+A3*B3*C3+A4*B4*C4+A5*B5*C5+A6*B6*C6即三个区域A2:A6,B2:B6,C2:C6同行数据积的和。返回值788。②数组计算要求:把上面数据表中的三个区域A2:A6,B2:B6,C2:C6数据按一个区域一个数组,计算对应数组积的和。把A2:A6,B2:B6,C2:C6分别作为一个数组,即A2:A6表示为数组-{2;5;9;7;1}B2:B6表示为数组-{3;5;7;2;6}C2:C6表示为数组-{4;6;8;7;2}公式:=SUMPRODUCT({2;5;9;7;1},{3;5;7;2;6},{4;6;8;7;2})=788注意:数组数据用大括号{}括起来。行数据之间用分号";"分隔,如果是同一行的数据,用逗号","分隔。⑵可能出现的错误①编辑公式时,引用的数据区域大小不一致导致计算错误,返回值为#VALUE!。示例:在上面的数据表中,计算A列与B列数据区域积的和。公式:=SUMPRODUCT(A2:A6,B2:B5)或=SUMPRODUCT(A2:A6,B2:B8)都会返回错误值#VALUE!。所以在用SUMPRODUCT函数时,引用的数据区域大小要一致。②数据区域中有错误值时,计算出现错误值。示例:在上面的数据表中,计算数据区域A2:A6与D2:D6对应积的和。公式:=SUMPRODUCT(A2:A6,D2:D6)因为D2:D6中有错误值#N/A,所以公式返回值为错误值#N/A。③数据区域引用不能整列引用。示例:计算上面数据表中A2:A6和B2:B6区域对应数据积的和,正确公式为=SUMPRODUCT(A2:A6,B2:B6)则返回正确的计算值94。如果用公式=SUMPRODUCT(A:A,B:B)
则返回错误值#NUM!。④数据区域有文本,计算中系统默认文本值为0。示例:在上面数据表中,计算A2:A6和E2:E6区域中对应数据积的和。公式=SUMPRODUCT(A2:A6,E2:E6)返回值是392,其中E5是文本KL,则A5*E5=0。二、用于多条件计数用数学函数SUMPRODUCT计算符合2个及以上条件的数据个数⑴数据表如下数据表所示: ABC1姓名性别职称2A男中一3B女中二4C女中一5D男中一6E女中一7F男中二8G女中二9H男中一10I男中一11J女中一统计表E列F列G列中一中二男女要求:统计上面数据表中男、女性中分别是中一、中二的人数。如下图片,A1:C11数据区域,在E1:G3区域统计男、女中中一和中二的人数是多少。计算结果⑵公式在数据统计区域中的F2单元格编辑如下公式:=SUMPRODUCT(($B$2:$B$11=$E2)*($C$2:$C$11=F$1))向下复制到F3,向右复制到G3。⑶公式分解及分析
①条件1——$B$2:$B$11=$E2在计算过程中,条件1是一个数组,返回多值,写成公式如下:=$B$2:$B$11=$E$2具体操作:选中10个连续的单元格,输入上述公式后,按Ctrl+Shift+回车键确认,返回10个逻辑判断值——TRUE;FALSE;FALSE;TRUE;FALSE;TRUE;FALSE;TRUE;TRUE;FALSE。这10个逻辑判断值构成一个新的由TRUE主FALSE组成的数组1。②条件2——$C$2:$C$11=F$1与条件1相同,是一个数组,返回多值,写成公式如下:=$C$2:$C$11=F$1具体操作:同样的方法,选中对应的10连续单元格,输入上述公式,按Ctrl+Shift+回车键确认,返回10个逻辑判断值——TRUE;FALSE;TRUE;TRUE;TRUE;FALSE;FALSE;TRUE;TRUE;TRUE。这10个逻辑判断值构成另一个新的由TRUE主FALSE组成的数组2。③($B$2:$B$11=$E2)*($C$2:$C$11=F$1)由新构成的数组1乘以数组2,即:=($B$2:$B$11=$E2)*($C$2:$C$11=F$1)={数组1*数组2}={TRUE;FALSE;FALSE;TRUE;FALSE;TRUE;FALSE;TRUE;TRUE;FALSE}*{TRUE;FALSE;TRUE;TRUE;TRUE;FALSE;FALSE;TRUE;TRUE;TRUE}={TRUE*TRUE;FALSE*FALSE;FALSE*TRUE;TRUE*TRUE;FALSE*TRUE;TRUE*FALSE;FALSE*FALSE;TRUE*TRUE;TRUE*TRUE;FALSE*TRUE}={1;0;0;1;0;0;0;1;1;0}其中,逻辑值TRUE与FALSE参与计算时:TRUE=1,FALSE=0,TRUE*TRUE=1,TRUE*FALSE=FALSE*TRUE=0,FALSE*FALSE=0因此{数组1*数组2}={1;0;0;1;0;0;0;1;1;0}由1和0构成了一个新的数组3。④=SUMPRODUCT(($B$2:$B$11=$E2)*($C$2:$C$11=F$1))函数SUMPRODUCT对新的数组3中的所有数据求和。即:=SUMPRODUCT(($B$2:$B$11=$E2)*($C$2:$C$11=F$1))=SUMPRODUCT({数组1*数组2})=SUMPRODUCT({数组3})=SUMPRODUCT({1;0;0;1;0;0;0;1;1;0})=4这里需要说明的是,公式编辑按照函数SUMPRODUCT的一般格式,可以编辑如下等效的公式:=SUMPRODUCT(($B$2:$B$11=$E2)*1,($C$2:$C$11=F$1)*1)函数SUMPRODUCT的作用是对数组($B$2:$B$11=$E2)与数组($C$2:$C$11=F$1))计算其乘积的和,即:=SUMPRODUCT(($B$2:$B$11=$E2)*1,($C$2:$C$11=F$1)*1)
=SUMPRODUCT({TRUE;FALSE;FALSE;TRUE;FALSE;TRUE;FALSE;TRUE;TRUE;FALSE}*1,{TRUE;FALSE;TRUE;TRUE;TRUE;FALSE;FALSE;TRUE;TRUE;TRUE}*1)=SUMPRODUCT({1;0;0;1;0;1;0;1;1;0},{1;0;1;1;1;0;0;1;1;1})=SUMPRODUCT({1*1;0*0;0*1;1*1;0*1;1*0;0*0;1*1;1*1,0*1})=SUMPRODUCT({1;0;0;1;0;0;0;1;1,0})=4注意:TRUE*1=1,FALSE*1=1*FALSE=0,TRUE*0=0*TRUE=0。数组中用分号分隔,表示数组是一列数组,分号相当于换行。两个数组相乘是同一行的对应两个数相乘。三、用于多条件求和。对于计算符合某一个条件的数据求和,可以用SUMIF函数来解决。如果要计算符合2个以上条件的数据求和,用SUMIF函数就不能够完成了。这就可以用函数SUMPRODUCT。用函数SUMPRODUCT计算符合多条件的数据和,基本格式是:SUMPRODUCT(条件1*条件2*……,求和数据区域)数据表 ABCD1姓名性别职称课时2A男中一153B女中二164C女中一145D男中一136E女中一187F男中二158G女中二169H男中一1410I男中一1711J女中一18要求:计算男、女分别是中一或中二的总课时数。统计表F列G列H列中一中二男女在G2中编辑公式=SUMPRODUCT(($B$2:$B$11=$F2)*($C$2:$C$11=G$1),$D$2:$D$11))回车确认后向下向右复制公式到H3单元格。公式释义:性别区域$B$2:$B$11中满足条件男和职称区域$C$2:$C$11中满足条件中一的数据,通过判断计算后由1和0组成一个新的数据区域,这个新的数据区域再和课时区域$D$2:$D$11中的对应数据相乘后求和。
公式对比:到此,对函数SUMPRODUCT用来计数和求和,试作一对比计数公式=SUMPRODUCT(($B$2:$B$11=$E2)*($C$2:$C$11=F$1))求和公式=SUMPRODUCT(($B$2:$B$11=$F2)*($C$2:$C$11=G$1),$D$2:$D$11)不难看出,求和公式在原来的计数公式中,在相同判断条件下,增加了一个求和的数据区域。也就是说,用函数SUMPRODUCT求和,函数需要的参数一个是进行判断的条件,另一个是用来求和的数据区域。四、用于排名次如下A列数据:A列B列数据名次56658965567890526090需要排出区域A2:A11中10个数据的名次。在B2中编辑公式:=SUMPRODUCT((A2