什么叫做统计前几名合计呢?先看看动画演示吧:

可以看到,数据按照销售数量从高往低排列,选择一个名次,就可以对前几名的销售数量求和。

这类问题在很多与数字排名有关的情况下都用得上,例如对前几名考试成绩求和,对前几名的客户订货量求和等等……

要实现动画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排序求和:如何统计前几名数据合计 上篇相关推荐

  1. excel排序求和:如何统计前几名数据合计 下篇

    上次咱们说到一个公式=SUM(LARGE(B:B,ROW(INDIRECT("1:"&H2)))),其中的ROW(INDIRECT("1:"&H ...

  2. nodejs+express(ejs)做摇一摇小游戏(公司年会摇一摇游戏环节,大屏幕统计前几名摇动次数),大家一起摇一摇,看谁摇的次数多,并用excel-export导出excel

    项目最后放完整 demo 源码连接 https://download.csdn.net/download/qq_38652871/12016509 马上要年会了,有个什么总突然过来找我们部门后端负责人 ...

  3. [转]当你老了,一生最后悔什么?全球统计前五名!

    第一名:92%的人后悔年轻时努力不够导致一事无成 所谓少壮不努力,老大徒伤悲,青春的大好时光总是流逝得那么快. 而在青春岁月里,又常常碰到那么多的诱惑甚至陷阱,当你猛然醒悟时,也许白发早生,才发现自己 ...

  4. Excel提取一列的前几位数据

    1.选中需要进行提取的一列列名下的一个位置 2.ctrl+shift+下 快捷选定列,整列变黑 3.在fx输入=LEFT(#,#) AH2表示读取AH列第二个单元格(如果第一行为列名,需要输入2),4 ...

  5. excel排序怎么让后面数据跟着动 excel排序为什么还是乱的

    excel排序怎么让后面数据跟着动?在选取数据范围时,必须将所有参与排序的数据都选入,才能确保后面的数据排序时跟着动.excel排序为什么还是乱的?可能是由于排序条件设置错误.单元格格式不一致等原因导 ...

  6. 如何成为一名数据科学家

    作者简介: 林荟,美国杜邦公司商业数据科学家,美国爱荷华州立大学博士.<套路!机器学习:北美数据科学家的私房课>作者.2017年1月至今主持美国统计协会市场营销在线数据科学讲座.个人网站: ...

  7. 【成绩统计】Excel计算年级学校排名和班级排名,并统计各班各科前1050名学生人数

    本文以"好分数"系统导出的期末考试成绩数据为基础,进行统计分析. 拿到表,首先整理下数据,去除无关字段数据,保留关键字段. 一开始的时候,,小编直接使用上表给出的"学校排 ...

  8. JS编写一个函数,实现传入一个不定长度字符串,查找出重复次数前n名的字符并分别统计其次数

    编写一个函数,实现传入一个不定长度字符串,查找出重复次数前n名的字符并分别统计其重复次数.写得好像比较复杂,大家有更好的方法欢迎留言指导,谢谢. function compare(string, n) ...

  9. java通过Excel 模板导出复杂统计类excel文档,在ruoyi前后端分离框架中的应用

    Hello, 大家好! 我是不作死就不会死,智商不在线,但颜值超有品的拆家队大队长 --咖啡汪 一只不是在戏精,就是在戏精路上的极品二哈 前几天刚做了java通过Excel 模板导出复杂统计类exce ...

最新文章

  1. 用Cordova打包Vue-vux项目
  2. nodejs async
  3. POJ3335(判断多边形内核是否存在)
  4. apache安装配置
  5. MATLAB仿真TSC在哪里找,-bash:tsc:找不到命令
  6. Swift中文教程(二十三) 高级运算符
  7. Linux下服务器搭建(7)——Oracle Linux ISO Images 高速镜像源下载地址(各版本齐全 建议收藏 最后更新2020.07.22)
  8. synchronized锁升级过程详解
  9. OJ-1:时钟问题【九度1553】
  10. js打印插件_使用 Nodejs 开发一个 commitlint-release 插件
  11. CSS控制显示超出部分,用省略号显示
  12. Mac环境配置MySQL(详细)
  13. 心跳检测,用oob实现
  14. 模板 2018-01-27 分解因数 分解质因数
  15. MySQL下载安装 完美卸载
  16. java中如何将字符串转化为字符_如何在Java中将字符串转换为运算符?
  17. 2018软创北京游记
  18. Google智能家居控制ESP8266
  19. 我的奇思妙想机器人消防员_我的奇思妙想智能机器人作文400字
  20. 哪里可以下载Samsung Galaxy S2 USB驱动程序?

热门文章

  1. WORD如何互相复制样式?
  2. 华海清科在科创板上市:2020年扭亏为盈,清华为实际控制人
  3. clip-path应用
  4. 海洋环流与海浪数值模式
  5. 百词斩个人中心功能测试
  6. 罗技 连点 脚本_走心分享!当评测罗技MASTER 3遇上ANYWHERE 3_鼠标
  7. R语言排序的基本函数
  8. sigset 与 signal的区别?
  9. Kaiming He 何恺明
  10. 腾讯地图只显示某一区域,覆盖图,marker自定义图标和文本标注