小兔网

函数SUMPRODUCT是一个集计数与求和于一身的函数,数组公式中函数SUMPRODUCT能取代函数SUM且不用按三键结束。


函数定义:

在给定的几组数组中,将数组间对应的元素相乘,并返回乘积之和。


语法格式:

SUMPRODUCT(array1, [array2], [array3], ...)


array1:必需。其相应元素需要进行相乘并求和的第一个数组参数。

array2, array3,...:可选。2 到 255 个数组参数,其相应元素需要进行相乘并求和。


1、忽略文本求和


20210614100000816040


输入公式:

=SUMPRODUCT(A2:A10)


函数SUMPRODUCT将非数值型的数组元素作为0处理。


公式就是SUMPRODUCT({1;0;2;0;3;0;0;0;5}),即返回11


2、文本型数值求和


202106141000009285082


输入公式:

=SUMPRODUCT(B2:B9*1)


B2:B9单元格数值是文本型,*1是将文本型数值转换成数值型


可以用“--”、“+0”、“-0”、 “/1”、“^1”等等来转换


3、单条件计数


求业绩大于等于5000的个数:


202106141000019315354


输入公式:

=SUMPRODUCT(N(B2:B9>=5000))


B2:B9>=5000部分返回{FALSE;TRUE;TRUE;FALSE;FALSE;TRUE;TRUE;FALSE}

条件成立返回逻辑值TRUE,条件不成立返回逻辑值FALSE


函数N:将不是数值形式的值转换为数值形式。日期转换为序列值,TRUE转换成1,其他值转换成0。


同样的,也可以用“--”、“+0”、“-0”、 “/1”、“^1”、“*1”等等来转换


N(B2:B9>=5000)部分返回{0;1;1;0;0;1;1;0}


用函数SUMPRODUCT求和返回4


4、单条件求和


求业绩大于等于5000的和:


20210614100003613276


输入公式:

=SUMPRODUCT((B2:B9>=5000)*B2:B9)


(B2:B9>=5000)部分返回{FALSE;TRUE;TRUE;FALSE;FALSE;TRUE;TRUE;FALSE}


发生四则运算时,TRUE相当于1,FALSE相当于0


(B2:B9>=5000)*B2:B9部分返回{0;7800;6521;0;0;16660;8054;0}


用函数SUMPRODUCT求和返回39035


5、多条件计数


求销售一部业绩大于等于5000的个数:


202106141000041874168


输入公式:

=SUMPRODUCT((B2:B9="销售一部")*(C2:C9>=5000))


多条件计数语法:


SUMPRODUCT((条件区域1=条件1)* (条件区域2=条件2)* (条件区域N=条件N))


6、多条件求和


求销售一部业绩大于等于5000的和:


2021061410000531940910


输入公式:

=SUMPRODUCT((B2:B9="销售一部")*(C2:C9>=5000)*C2:C9)


多条件求和语法:


SUMPRODUCT((条件区域1=条件1)* (条件区域2=条件2)* (条件区域N=条件N)*求和区域)

或者:

SUMPRODUCT((条件区域1=条件1)* (条件区域2=条件2)* (条件区域N=条件N),求和区域)


该题也可以用公式:

=SUMPRODUCT((B2:B9="销售一部")*(C2:C9>=5000),C2:C9)


2021061410000630689112


多条件求和语法中求和条件前使用“*”与“,”的区别:


当求和区域中没有文本时,“*”与“,”可以互相通用;


当求和区域中有文本时使用“,”,若使用“*”会返回错误值#VALUE!


7、单条件计算不重复个数


求业务员不重复的个数:


2021061410000716160214


输入公式:

=SUMPRODUCT(1/COUNTIF(A2:A9,A2:A9))


COUNTIF(A2:A9,A2:A9)部分统计区域A2:A9中每个单元格内容在该区域中出现的次数,返回{2;1;2;3;1;1;3;3}


1/{2;1;2;3;1;1;3;3}是将重复数据算作1,比如出现2次的是1/2,出现3次的是1/3,


1/COUNTIF(A2:A9,A2:A9)部分返回

{0.5;1;0.5;0.333333333333333;1;1;0.333333333333333;0.333333333333333}


用函数SUMPRODUCT求和返回5


8、区间求和


求业绩大于等于5000、小于15000的和:


202106141000081625316


输入公式:

=SUMPRODUCT((B2:B9>=5000)*(B2:B9<15000)*B2:B9)

或者:

=SUMPRODUCT((B2:B9>=5000)*(B2:B9<15000),B2:B9)


2021061410000885945718


9、隔列求和


求入库、出库合计:


2021061410000984782320


输入公式:

=SUMPRODUCT(($B$2:$G$2=H$2)*$B3:$G3),右拉下拉填充。


10、数组相乘


求总提成:


2021061410001082832122


输入公式:

=SUMPRODUCT(B2:B9*C2:C9)


B2:B9*C2:C9返回每个业绩*对应提成比例,即返回{45.06;390;326.05;136.89;2001.5;1466;402.7;138.75}


然后用函数SUMPRODUCT求和


11、有条件的数组相乘


求“销售一部”的总提成:


2021061410001167153624


输入公式:

=SUMPRODUCT((A2:A9="销售一部")*C2:C9*D2:D9)


(A2:A9="销售一部")条件成立返回TRUE,条件不成立返回FALSE,即{TRUE;TRUE;FALSE;FALSE;TRUE;TRUE;FALSE;TRUE}


然后*C2:C9返回的是销售一部的业绩,即{1502;7800;0;0;20015;14660;0;4625}


再*D2:D9返回的就是销售一部对应的提成,即{45.06;390;0;0;2001.5;1466;0;138.75}


最后用函数SUMPRODUCT求和


12、带"~"求和


求业务员中有带“~”的业绩和:


2021061410001251491126


输入公式:

=SUMPRODUCT(ISNUMBER(FIND("~",B2:B9))*C2:C9)


函数SUMPRODUCT不能使用通配符,但可以与函数FIND相结合完成对应功能


FIND("~",B2:B9)部分找到“~”在各业务员字符串中的位置,没有“~”返回错误值#VALUE!,该部分返回{2;#VALUE!;3;#VALUE!;#VALUE!;1;#VALUE!;#VALUE!}


函数ISNUMBER:判断一个值是否为数值,返回TRUE或FALSE。


ISNUMBER(FIND("~",B2:B9))部分返回{TRUE;FALSE;TRUE;FALSE;FALSE;TRUE;FALSE;FALSE}


再*C2:C9返回带“~”的各业务员的业绩{1502;0;6521;0;0;14660;0;0}


最后用函数SUMPRODUCT求和。