标题：SUMPRODUCT函数
含义
汉语的意思是
SUM:【数】求和
PRODUCT:【数】(乘)积 20 is the product of 5 and 4.二十是五与四的乘积。 
SUMPRODUCT:组合的汉语意思是:乘积之和
在给定的几组数组中，将数组间对应的元素相乘，并返回乘积之和。
语法
SUMPRODUCT（array1,array2,array3, ...） 
Array1,array2,array3, ... 为 2 到 30 个数组，其相应元素需要进行相乘并求和。
说明
· 数组参数必须具有相同的维数，否则，函数 SUMPRODUCT 将返回错误值 #VALUE!。 
· 函数 SUMPRODUCT 将非数值型的数组元素作为 0 处理。
示例
如果将示例复制到空白工作表中，可能会更易于理解该示例。 
B
C
D
E
1
Array1
Array1
Array2
Array2
2
3
4
2
7
3
8
6
6
7
4
1
9
5
3
公式
说明（结果）
=SUMPRODUCT(B2:C4*D2:E4)
两个数组的所有元素对应相乘，然后把乘积相加，即3*2+4*7+8*6+6*7+1*5+9*3。(156)
数学函数SUMPRODUCT应用实例
一、基本功能
1．函数SUMPRODUCT的功能返回相应的区域或数组乘积的和。
2．基本格式SUMPRODUCT（数据1，数据2，……，数据30）
3．示例数据表A列 B列 C列 D列 E列数据1数据2数据3数据4数据52 3 4 12 105 5 6 5 209 7 8 #N/A 307 2 7 9 KL1 6 2 8 2
⑴基本计算
①区域计算要求：计算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个及以上条件的数据个数
⑴数据表如下数据表所示：
A
B
C
1
姓名
性别
职称
2
A
男
中一
3
B
女
中二
4
C
女
中一
5
D
男
中一
6
E
女
中一
7
F
男
中二
8
G
女
中二
9
H
男
中一
10
I
男
中一
11
J
女
中一
统计表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=$E2具体操作：选中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*……，求和数据区域）
数据表
A
B
C
D
1
姓名
性别
职称
课时
2
A
男
中一
15
3
B
女
中二
16
4
C
女
中一
14
5
D
男
中一
13
6
E
女
中一
18
7
F
男
中二
15
8
G
女
中二
16
9
H
男
中一
14
10
I
男
中一
17
11
J
女
中一
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<$A$2:$A$11)*1)+1
向下复制到单元格B11。
公式释义：用A2到$A$2:$A$11(用绝对引用$保证公式在向下复制时整个数据区域不发生变化)中进行比较,当A2<$A$2:$A$11成立时,则返回TRUE;如果A2<$A$2:$A$11不成立就返回FALSE。所以数组公式=A2<$A$2:$A$11返回一个由TRUE和FALSE构成的逻辑数组。把数组公式=A2<$A$2:$A$11构成的逻辑数组乘1，得到一个由0和1构成的新数组。SUMPRODUCT再对由0和1构成的新数组求和，表示在数据区域$A$2:$A$11中比A2大的数据个数。所以A2在数据区域$A$2:$A$11内排列的位次应该是比A2大的数据个数+1，即公式=数据区域$A$2:$A$11内比A2大的个数+1
=SUMPRODUCT((A2<$A$2:$A$11)*1)+1
公式向下复制，则依次对$A$2:$A$11中每一个数据重复进行上述判断求和，从而排出数据区域$A$2:$A$11中每一个数据的位次。很显然，对于数据区域$A$2:$A$11中相同的数，判断和计算结果是相同的，也就是排出来的位次相同。所以用SUMPRODUCT函数排出来的名次，与直接用RANK函数排出来的名次是一样的，有重复名次，但最大位次数不超过数据区域$A$2:$A$11中的总数据个数。
如果希望排出的位次没有重复，而数据区域$A$2:$A$11中相同数据的位次按数据出现的先后顺序排位，可以用下面的公式：
=SUMPRODUCT((A2<$A$2:$A$11)*1)+COUNTIF($A$2:A2,A2)
公式向下复制即可。两种排名对比如下表所示：A列 B列 C列数据 名次重复顺序名次56 8 865 5 589 3 365 5 656 8 978 4 490 1 152 10 1060 7 790 1 2
综上所述，对于多条件的计数或者求和，可以用数学函数SUMPRODUCT来比较方便的解决。在使用函数时，进行数据引用的单元格区域或数组应该大小一致，不能采取整列引用（形如A：A）。如果跨表使用函数SUMPRODUCT，与其它函数跨表引用数据一样，数据区域前面应该标明工作表名称。[color=#EE1D24,strength=3);]计数公式中最关键的是确定计数的判断条件。[color=#EE1D24,strength=3);]求和公式在原来的计数公式中，在相同判断条件下增加了一个求和的数据区域。[color=#EE1D24,strength=3);]用函数SUMPRODUCT求和，函数需要的参数一个是进行判断的条件，另一个是用来求和的数据区域。