Excel SUMPRODUCT函数用法(乘积求和,分组排序)
SUMPRODUCT函数是Excel中功能比较强大的一个函数,可以实现sum,count等函数的功能,也可以实现一些基础函数无法直接实现的功能,常用来进行分类汇总,分组排序等
SUMPRODUCT 函数基础
SUMPRODUCT函数先计算多个数组的元素之间的乘积再求和。SUMPRODUCT函数的语法为:
SUMPRODUCT(array1,array2,array3, …),其中Array为数组,用于指定包含构成计算对象的值的数组或单元格区域
SUMPRODUCT函数的使用注意事项:
(1).数组参数必须具有相同的维数,即行数相同,否则,函数SUMPRODUCT将返回错误值#VALUE!
(2).数据区域引用不能整列引用.如:A:A、B:B,必须是A2:A100这种
SUMPRODUCT 函数用法
用法1:乘积求和
如下数据需要统计公司整体的花费,需要将数量乘以单价并汇总

这里使用SUMPRODUCT函数可以直接得到结果。输入公式=SUMPRODUCT(C2:C8*D2:D8)或者=SUMPRODUCT(C2:C8,D2:D8)即可得到总计花费
这里用到了两写方法,第一个公式中用*(乘号)连接参数。第二个公式中用,(逗号)连接参数。本例中的数据源都是数值,所以两种方法返回的结果一致。如果当数据源中包含文本数据值,使用公式2仍然可以返回正确结果,SUMPRODUCT将非数值型的元素作为0处理。但如果用公式1则会导致数值和文本相乘,返回错误值:#VALUE!。
乘积求和是SUMPRODUCT 函数最基础的用法,也可以解释SUMPRODUCT 函数的原理:即将选取区域的数组相乘再相加
用法2:条件求和
SUMPRODUCT函数中加入逻辑判断即可以实现sumif、sumifs函数的功能:条件求和。例如想要求市场部的总花费,即单条件求和,公式如下:=SUMPRODUCT((A2:A8="市场部")*C2:C8*D2:D8)
其中A2:A8="市场部"即为对应的条件判断,如果为市场部,则返回结果为True,对应值为1,并与后续数组中的数量和单价相乘,如果不为市场部,则返回结果为False,对应值为0,与后续数组中的数量和单价相乘后返回的结果为0,从而实现了条件求和。
当有多个条件求和时也可以按照同样的原理增加逻辑判断。例如求市场部笔记本总花费,对应公式为:=SUMPRODUCT((A2:A8="市场部")*(B2:B8="笔记本")*C2:C8*D2:D8)
用法3:条件计数
条件计数的原理即为将SUMPRODUCT函数中的参数全部设为条件判断,判断结果为True的返回数值1,相加后即为满足条件的计数
例如求市场部对应的记录数量,公式为:=SUMPRODUCT(N(A2:A8="市场部"))其中部门列是文本形式,则需嵌套N函数,表示返回转化为数值后的值,从而统计对应的记录数。
如果需要对多条件进行计数,例如统计市场部单价大于5的记录数,则公式为:=SUMPRODUCT((A2:A8="市场部")*(D2:D8>5))
用法4:分组排序
SUMPRODUCT函数也常用于分组排序,例如需要将不同部门的商品单价排序,则对应公式为:=SUMPRODUCT(($A$2:$A$8=A2)*($D$2:$D$8>=D2))
其中$A$2:$A$8=A2表示条件区域列判断是否等于A2,返回对应的判断结果True和False。$D$2:$D$8>D2判断单价区域列是否大于等于D2,同样返回一组判断结果True和False,通过SUMPRODUCT函数将两组数组相乘,得到的就是部门列为市场部,且单价大于等于10的相乘结果为1,其他结果为0,再相加后即可得到整个分组中大于D2的记录数,从而得到对应的排名。
省流版公式套路:=SUMPRODUCT((条件区域1=条件1)*(要进行排名的区域>数值))+1
用法5:多权重计算
上述几种用法中SUMPRODUCT 函数中的数组区域都是一列的列数组,同样的一行的行数组也是可以的。例如下面需要根据笔试,面试和其他成绩及权重计算总成绩:

总成绩计算公式为:=SUMPRODUCT($B$17:$D$17,B18:D18),其中$B$17:$D$17为权重区域,```B18:D18``为成绩区域,注意两个区域的绝对引用和相对引用。SUMPRODUCT 函数对两个区域进行乘积求和。在权重项目比较多时使用SUMPRODUCT比一个一个乘要方便很多
用法6:隔列条件求和
如下例中需要计算每一种产品的计划采购数量和实际采购数量

汇总笔记本计划数量的公式为=SUMPRODUCT(($B$33:$I$33=J$33)*$B34:$I34),其中$B$33:$I$33=J$33为条件判断区域,找到对应为计划的列,$B34:$I34为值区域,符合条件的列条件判断区域返回1,然后与值区域相乘再相加。
对于所有产品的总计数量,对应公式为=SUMPRODUCT(($B$33:$I$33=J$33)*$B34:$I37) ,将值区域设为的产品区域,相乘相加后即得到所有产品所有季度的汇总、
从这个例子可以看得出来SUMPRODUCT函数的array数组使用很灵活,但原理是一致的,掌握原理才可以更好的使用SUMPRODUCT函数
示例文件下载:
https://download.csdn.net/download/qq_42692386/88855138
52c88f6d-eb91-4a75-8b48-d6e0957f5559

Excel SUMPRODUCT函数用法(乘积求和,分组排序)的更多相关文章
- Excel Countif函数用法
公式:=COUNTIF(范围,条件) 例1: 统计A1:A11当中,等于数字3的单元格,结果是4个. 例2:还可以进行大于(>),大于等于(>=),小于(<),小于等于(<=) ...
- 分组排序函数——row_number()
1.MySQL8.0以上版本 用法1:无分组排序 Row_number() OVER(ORDER BY 字段 DESC)例如:Row_number() OVER(ORDER BY 学生成绩 DESC) ...
- 总结distinct、group by 、row_number()over函数用法及区别
distinct和group by 是一样的,查询去重,只能是全部重复的,也可以理解为针对单例,因为一行有一个字段不一样,他们就会认为这两行内容是不重复的.但是使用row_number()over这个 ...
- oracle中分组排序函数用法 - 转
项目开发中,我们有时会碰到需要分组排序来解决问题的情况,如:1.要求取出按field1分组后,并在每组中按照field2排序:2.亦或更加要求取出1中已经分组排序好的前多少行的数据 这里通过一张表的示 ...
- ROW_NUMBER() OVER()函数用法;(分组,排序),partition by
转载:https://www.cnblogs.com/alsf/p/6344197.html 1.row_number() over()排序功能: (1) row_number() over()分组排 ...
- ROW_NUMBER() OVER()函数用法;(分组,排序),partition by (转)
1.row_number() over()排序功能: (1) row_number() over()分组排序功能: 在使用 row_number() over()函数时候,over()里头的分组以及排 ...
- Excel—SUMPRODUCT用法指南
1.最简单的SUMPRODUCT函数等同与SUM函数. 2.SUMPRODUCT可以设置多参数,其输出值为各参数对应值的乘积之和. E2=6*7+8*6+2*8+9*8+3*8+5*9 3.SUMPR ...
- Excel中Sumproduct函数的使用方法
1.sumproduct函数的含义 1 1.Sumproduct函数的适用范围,在给定的几组数组中,然后把数组间对应的元素相乘,最后返回乘积之和. 从字面上可以看出,sumproduct有两个英文单词 ...
- oracle 分组排序函数
项目开发中,我们有时会碰到需要分组排序来解决问题的情况:1.要求取出按field1分组后,并在每组中按照field2排序:2.亦或更加要求取出1中已经分组排序好的前多少行的数据 这里通过一张表的示例和 ...
- row_number() over (partition by....order by...)用法 分组排序
row_number() over (partition by....order by...)用法 分组排序 row_number() OVER (PARTITION BY COL1 ORDER BY ...
随机推荐
- IP地址字符串转数组
查看代码 static uint8_t ip_buf[4]; static uint8_t test_str[] = "192.168.1.123"; static uint8_t ...
- FreeRTOS消息队列传递数组
1.使用消息队列的发送和接收前,需要先创建消息队列 2.消息队列的深度和大小 深度 就是数组的元素个数 大小 就是整个数组占用的空间大小 消息队列的创建 static void AppObjC ...
- java基础之File、流
一.File类 我们可以使用File类的方法 创建一个文件/文件夹 删除文件/文件夹 获取文件/文件夹 判断文件/文件夹是否存在 对文件夹进行遍历 获取文件的大小 构造方法: 1.public Fil ...
- windows10 激活教程
1.环境 适用对象:VL版本的windows OEM版本请使用文末工具激活 1.1查询自己电脑版本 [win+R]->输入[slmgr /dlv]->查看[产品密钥通道] slmgr /d ...
- DPDI online在线调度系统环境部署
DPDI online简介: DPDI Online 是一款基于Kettle的强大在线任务调度平台,凭借其高效与灵活性,专为调度和监控Kettle客户端生成的ETL任务而设计 DPDI online部 ...
- fiddler的composer设计器
1.过程:点击composer,把要修改请求体的会话拖到composer空白处,composer出现请求方式,url,请求报文,请求体 2.在请求体中修改请求内容(比如删除号码),然后点击excute ...
- 2docker私有镜像仓库registry
3 docker私有镜像仓库 3.1准备服务器 重新安装CENTOS7,加大磁盘空间. ip 配置 登录 192.168.168.168 4核虚拟CPU/4G内存/300G磁盘 22/密钥登陆/LCZ ...
- ServletContext相关
简介 如何得到对象 有什么作用 1.获取全局配置参数 2.获取web工程中的资源 3.存取数据,servlet间共享数据 域对象 ServlerContext的生命周期 ServletContext ...
- django笔记(3)-数据库操作
一:路由系统 url 1.url(r'^index/', views.index),url(r'^home/',views.Home.as_view()), 一个url对应一个函数或一个类 ...
- ASP.NET Core MiniAPI中 EndPoint相关
1.状态码返回之演化之路 1.1最基本的就是用Results或者TypedResults返回带有状态码的响应(可选Json响应体) app.MapGet("/fruit/{id}" ...