excel排序求和:如何统计前几名数据合计 上篇
什么叫做统计前几名合计呢?先看看动画演示吧:
可以看到,数据按照销售数量从高往低排列,选择一个名次,就可以对前几名的销售数量求和。
这类问题在很多与数字排名有关的情况下都用得上,例如对前几名考试成绩求和,对前几名的客户订货量求和等等……
要实现动画1的这种求和非常容易,使用SUMIF函数就能得到结果,公式为:=SUMIF(D:D,"<="&H2,F:F)
简单说一下这个公式吧,SUMIF(条件区域,条件,求和区域),关键是这里的条件,"<="&H2表示对序号这一列大于等于H2单元格数字的销售数量求和。因为条件中同时存在比较符号<=和单元格引用H2,所以需要&符号进行连接。
不过今天要说的重点不是SUMIF,因为接下来遇到的数据并不是这么规范的从高往低排序,而是杂乱无序的一列数字。
如图所示,AB两列才是原始的数据源,使用公式=SUM(LARGE(B:B,ROW(INDIRECT("1:"&H2))))可以得到与文章开头所示的SUMIF公式相同的结果。
我们今天的目的就是要搞清楚这个看起来有点奇怪的函数组合:SUM+LARGE+ROW+INDIRECT套路。在这个组合中,前三个函数大家并不陌生,SUM是求和函数,LARGE是获取第几个最大值的函数,ROW是得到行号的函数,唯一比较陌生或者说不太好理解的就是INDIRECT函数了。
下面结合示例来解释这个公式的原理。
其实这个公式的核心部分是SUM和LARGE,例如需要对前三名求和,公式就是=SUM(LARGE(B2:B24,{1,2,3}))。
重点需要理解LARGE(B2:B24,{1,2,3})这部分,LARGE(数据区域,第几名),如果第二参数“第几名”只是一个数字,就表示指定的这个名次,如果是多个数字,就表示每个数字所对应的名次,因此公式LARGE(B2:B24,{1,2,3})会得到三个数,这一点我们可以使用F9功能键来理解,在编辑栏选中公式的这部分:
然后按一下F9键,就能看到LARGE得到的三个数字:
由SUM函数对这三个数字求和,就得到了前三名的合计。
在这种用法中,LARGE的第二参数使用了常量数组,也就是将多个值放在一组大括号中。
使用常量数组有一个弊端,例如要对前10名求和,就要将LARGE(B2:B24,{1,2,3})改成LARGE(B2:B24,{1,2,3,4,5,6,7,8,9,10})。如果要对前20名求和,公式就更啰嗦,因此就有了另一种写法,将常量数组改为ROW函数来实现,还是以前三名为例进行说明。
公式可以写为=SUM(LARGE(B2:B24,ROW(1:3)))
这个公式需要同时按下CTRL+SHIFT+回车键完成输入,公式两边的大括号是自动生成的,并不是手工输入的。
可以自己试试,选中ROW(1:3),使用F9键,可以得到与{1,2,3}相同的结果。对于多个常量的话,使用ROW就更方便了,例如前20名,公式就是=SUM(LARGE(B2:B24,ROW(1:20))),只需要修改ROW函数中的结束行号就可以。
可以看到,使用了ROW函数后,公式的可扩展性要比使用常量数组方便很多,不过对于要计算的名次不是固定值的时候,公式就做不到了,或许你会认为这样的公式能达到效果:=SUM(LARGE(B2:B24,ROW(1:H2)))
但如果你真的使用的话,会得到这样的回应:
表面上看不出有什么问题,其实问题就出在ROW(1:H2)这部分。
ROW函数用法虽然简单,但是要求比较严格,参数只能使用单元格或单元格区域,也就是一个有效的引用。
1:H2显然不满足这个要求。
怎么办?
这就需要INDIRECT这个非常独特的函数出马了。
其实公式在一开始就有了,写成ROW(INDIRECT("1:"&H2))公式就没有问题,至于为什么,咱们下篇接着聊。
excel排序求和:如何统计前几名数据合计 上篇相关推荐
- excel排序求和:如何统计前几名数据合计 下篇
上次咱们说到一个公式=SUM(LARGE(B:B,ROW(INDIRECT("1:"&H2)))),其中的ROW(INDIRECT("1:"&H ...
- nodejs+express(ejs)做摇一摇小游戏(公司年会摇一摇游戏环节,大屏幕统计前几名摇动次数),大家一起摇一摇,看谁摇的次数多,并用excel-export导出excel
项目最后放完整 demo 源码连接 https://download.csdn.net/download/qq_38652871/12016509 马上要年会了,有个什么总突然过来找我们部门后端负责人 ...
- [转]当你老了,一生最后悔什么?全球统计前五名!
第一名:92%的人后悔年轻时努力不够导致一事无成 所谓少壮不努力,老大徒伤悲,青春的大好时光总是流逝得那么快. 而在青春岁月里,又常常碰到那么多的诱惑甚至陷阱,当你猛然醒悟时,也许白发早生,才发现自己 ...
- Excel提取一列的前几位数据
1.选中需要进行提取的一列列名下的一个位置 2.ctrl+shift+下 快捷选定列,整列变黑 3.在fx输入=LEFT(#,#) AH2表示读取AH列第二个单元格(如果第一行为列名,需要输入2),4 ...
- excel排序怎么让后面数据跟着动 excel排序为什么还是乱的
excel排序怎么让后面数据跟着动?在选取数据范围时,必须将所有参与排序的数据都选入,才能确保后面的数据排序时跟着动.excel排序为什么还是乱的?可能是由于排序条件设置错误.单元格格式不一致等原因导 ...
- 如何成为一名数据科学家
作者简介: 林荟,美国杜邦公司商业数据科学家,美国爱荷华州立大学博士.<套路!机器学习:北美数据科学家的私房课>作者.2017年1月至今主持美国统计协会市场营销在线数据科学讲座.个人网站: ...
- 【成绩统计】Excel计算年级学校排名和班级排名,并统计各班各科前1050名学生人数
本文以"好分数"系统导出的期末考试成绩数据为基础,进行统计分析. 拿到表,首先整理下数据,去除无关字段数据,保留关键字段. 一开始的时候,,小编直接使用上表给出的"学校排 ...
- JS编写一个函数,实现传入一个不定长度字符串,查找出重复次数前n名的字符并分别统计其次数
编写一个函数,实现传入一个不定长度字符串,查找出重复次数前n名的字符并分别统计其重复次数.写得好像比较复杂,大家有更好的方法欢迎留言指导,谢谢. function compare(string, n) ...
- java通过Excel 模板导出复杂统计类excel文档,在ruoyi前后端分离框架中的应用
Hello, 大家好! 我是不作死就不会死,智商不在线,但颜值超有品的拆家队大队长 --咖啡汪 一只不是在戏精,就是在戏精路上的极品二哈 前几天刚做了java通过Excel 模板导出复杂统计类exce ...
最新文章
- 用Cordova打包Vue-vux项目
- nodejs async
- POJ3335(判断多边形内核是否存在)
- apache安装配置
- MATLAB仿真TSC在哪里找,-bash:tsc:找不到命令
- Swift中文教程(二十三) 高级运算符
- Linux下服务器搭建(7)——Oracle Linux ISO Images 高速镜像源下载地址(各版本齐全 建议收藏 最后更新2020.07.22)
- synchronized锁升级过程详解
- OJ-1:时钟问题【九度1553】
- js打印插件_使用 Nodejs 开发一个 commitlint-release 插件
- CSS控制显示超出部分,用省略号显示
- Mac环境配置MySQL(详细)
- 心跳检测,用oob实现
- 模板 2018-01-27 分解因数 分解质因数
- MySQL下载安装 完美卸载
- java中如何将字符串转化为字符_如何在Java中将字符串转换为运算符?
- 2018软创北京游记
- Google智能家居控制ESP8266
- 我的奇思妙想机器人消防员_我的奇思妙想智能机器人作文400字
- 哪里可以下载Samsung Galaxy S2 USB驱动程序?