Excel 之中国式排序(排名连续)
Excel 之中国式排序(排名连续)
原始文档:https://www.yuque.com/lart/tools/olm3oa
本文内容主要参考自:https://www.sohu.com/a/234253447_99914465
中国式排序
摘自:https://baike.baidu.com/item/%E4%B8%AD%E5%9B%BD%E5%BC%8F%E6%8E%92%E5%90%8D
在排名计算方法中,中国人的习惯是,无论有几个并列第 2 名,之后的排名仍应该是第 3 名,即并列排名不占用名次。
例如:对数列{3,2,2,1}从大到小进行排名,按国际通行的惯例是{第一名,第二名,第二名,第四名},比如奥运会某场比赛出现并列银牌,则不发铜牌
而按中国式排名,结果是{第一名,第二名,第二名,第三名}。
使用 Excel 的公式实现中国式排序
这里我们只考虑SUMPRODUCT+COUNTIF
的公式方法,这或许是最直接且简单的形式了。
之所以不考虑其他形式是因为直接使用公式可以方便的迁移到条件格式中,用来自定义数据单元格的显示格式。
为了便于解释,这里首先引入我们的数据:
注意这里展示了四种实际可以看到的情形:
- A 列:正常数据,但是我们需要选择最小的前三个,分别使用红绿蓝色加粗标注。
- B 列:正常数据,但是我们需要选择最大的前三个,分别使用红绿蓝色加粗标注。
- C 列:存在缺失数据,但是我们仍然需要在剩下的数据集中选择最小的前三个,分别使用红绿蓝色加粗标注。
- D 列:存在缺失数据,但是我们仍然需要在剩下的数据集中选择最大的前三个,分别使用红绿蓝色加粗标注。
组件函数的功能
SUMPRODUCT
即对各个参数数组对应元素的乘积累和。
- 当 sumproduct 函数中的参数只有一个数组时,即对数组
{1;2;3;4;5;6;7}
进行求和,1+2+3+4+5+6+7=28
。 - 当 sumproduct 函数中参数为两个数组时,两个数组的所有元素对应相乘。
- 公式
=sumproduct(A2:A8,B2:B8)
可转化为=sumproduct(数组1,数组2)=sumproduct({1;2;3;4;5;6;7},{1;2;3;4;5;6;7})=1*1+2*2+3*3+4*4+5*5+6*6+7*7=140
。
- 公式
- 当 sumproduct 函数中参数为三个数组时,三个数组的所有元素对应相乘。
高级用法——条件求和:
- 单条件求和:
=sumproduct((A2:A13="成都发货平台")*(B2:B13))
用来统计成都发货平台的发货量。- 看到这公式你可能有疑惑,它跟语法格式好像不一样,其实把它看做是只有一个参数。
- 公式分解
=sumproduct({数组1}*{数组2})=sumproduct({TRUE;…..TRUE;…..TRUE}*{11012;…41568;…12506})=1*11012+1*41568+1*12506=65086
。 sumproduct
函数中,逗号分割的各个参数必须为数字型数据。如果是判断的结果逻辑值,就要*1
转换为数字。如果不用逗号,直接用*
连接,就相当于乘法运算,就不必添加*1
。所以以下两种形式等价:- 一种就是
=sumproduct((A2:A13="成都发货平台")*(B2:B13))
,直接将逻辑数组乘以数字数组。 - 另一种是
=sumproduct((A2:A13="成都发货平台")*1, (B2:B13))
,乘以 1,把它转化成数组才能参与运算。
- 一种就是
- 多条件求和:
=SUMPRODUCT((A2:A13="成都发货平台")*(C2:C13="重庆发货平台")*(D2:D13))
用来求当发货平台为成都,收货平台为重庆的发货量。- 求成都发货平台和重庆发货平台的发货量,只要求满足其中的一个条件时,可以使用
=SUMPRODUCT(((A2:A13="成都发货平台")+(A2:A13="重庆发货平台")),(B2:B13))
。 - 注意:
SUMPRODUCT(条件1*条件2*条件3...条件N)
中*
:满足所有条件(all);SUMPRODUCT(条件1+条件2+条件3...+条件N)
中+
:满足任一条件(any)。
实用案例:
- 有条件计数
=SUMPRODUCT((A2:A13="成都发货平台")*(C2:C13="重庆发货平台"))
- 利用 sumproduct 函数中 TRUE 和 FALSE 逻辑数组 1 和 0 的特效来计数。
- 公式分解
=sumproduct({1;0;0;0;0;0;0;0;0;1;0;1}*{1;0;0;0;0;0;1;0;0;1;0;0})=2
- 有条件排名
=SUMPRODUCT((D2<$D$2:$D$8)*1)+1
- 数组公式
D2<$D$2:$D$8
这里是由TRUE
和FALSE
组成的逻辑数组{FALSE;TRUE;TRUE;FALSE;TRUE;FALSE;TRUE}
,通过*1
转化为 1 和 0 的数组{0;1;1;0;1;0;1}
。 - 这里将整体区域和特定单元格比较从而得到比该单元格的值大的单元格数量,由于这里表示实际排名,所以还需要将自身的位数加入,即额外加个 1。
- 数组公式
函数使用时可能出现的问题:
sumproduct
函数后面的参数必须是数组,即行和列的维度是一致的。参数维数不一致所以返回错误值#VALUE!
参考自:https://jingyan.baidu.com/article/3c343ff7074afe0d36796353.html
COUNTIF
统计范围 range 中满足给定条件(criteria)的单元格的数量。
简单案例:
- 统计区域中大于 90 的单元格的数量:
=COUNTIF(B2:B10,">90")
- 统计区域中字符串单元格中
郑
字开头的数量:=COUNTIF(A2:A10,"郑*")
- 统计姓名不重复个数
=SUM(1/COUNTIF(A2:A14,A2:A14))
,并按 Ctrl+Shift+Enter 组合键。COUNTIF(A2:A14,A2:A14)
:表示对每个单元格进行统计判断,这样遇到相同的姓名,出现的人数会是一样的。1/COUNTIF(A2:A14,A2:A14)
:表示删除重复值,假如只有出现一个,那个 1 除以 1 就等于 1,若是出现 2,那么 1 除以 2 等于 1/2,而求和则等于 1,这样就可以获取不重复人数。(这个想法真的很妙)
开始实现
A 列数据
解决方法:=SUMPRODUCT((A$1:A$11<=A1)/COUNTIF(A$1:A$11,A$1:A$11))
公式解析:
(A$1:A$11<=A1)
获取区域中是否小于等于**A1**
情况(因为选择的是最小的几个数,所以应该考虑的是小于等于的数)。/COUNTIF(A$1:A$11,A$1:A$11)
表示是针对各个单元格值出现的次数取平均。所以当对最终的数组结果加和的时候,直接抵消了重复次数。
B 列数据
解决方法:=SUMPRODUCT((B$1:B$11>=B1)/COUNTIF(B$1:B$11,B$1:B$11))
C 列数据
错误方法:=SUMPRODUCT((C$1:C$11<=C1)/COUNTIF(C$1:C$11,C$1:C$11))
因为存在缺失值,所以这里最好借助IFERROR
来处理。
解决方法:=SUMPRODUCT(IFERROR((C$1:C$11<=C1)/COUNTIF(C$1:C$11,C$1:C$11),FALSE))
D 列数据
解决方法:=SUMPRODUCT(IFERROR((D$1:D$11>=D1)/COUNTIF(D$1:D$11,D$1:D$11),FALSE))
可以看到,使用IFERROR
的时候,不论是升序还是降序排,缺失值都会位于末尾。所以不影响取前面的数据。
Excel 中按enter
键和shift+ctrl+enter
键的区别
摘自:https://zhidao.baidu.com/question/576243347.html
- 不是所有公式都有必要加上 shift+ctrl+enter 三键,普通公式没必要用三键,但是如果是需要通过数组运算才能得出正确值的公式就一定要加上数组三键。
=A1-B1
是普通公式,加不加三键得出的值是相同的,就没必要加。=SUM(A1:A100-B1:B100)
公式的意思是A1 至 A100 单元格区域分别减去B1 至 B100 单元格区域的值的总和(即=A1-B1+A2-B2+A3-B3+A4-B4........A100-B100
)。这样就是数组计算了,必须要用三键,只简单的按下回车键是得不出正确值的。- 这个公式的计算目的也可以用公式
=SUM(A1:A100)-SUM(B1:B100)
得到结果。但这个公式就不是数组公式了,所以又不必用数组三键了。
- 这个公式的计算目的也可以用公式
- 能用普通公式进行计算的尽量用普通公式进行设置,这样可以减少内存的占用。
shift+ctrl+enter
是对数组函数的运算,当我们在写完函数公式时候,单独enter
是不会对数组函数起作用的,而当按下shift+ctrl+enter
后,原有的函数两端就会出现{ }
,表明是对一个数组区域运算
Excel 之中国式排序(排名连续)相关推荐
- php奥运金牌排序代码,Excel | 用奥运奖牌榜学习排序排名
里约奥运会看着很窝火,不管奖牌榜怎样,中国体育健儿还是相当赞的,现在有的奖牌也不代表实力了,实力会被裁判打败的. 好了,废话不多说,我们今天不是来说奥运会的,而是拿奥运奖牌榜用Excel来学习排序排名 ...
- 如何用excel实现并列排序
如何用excel实现并列排序 学校工作碰到这样的问题,要把学生的总成绩进行排序,但是排序时要注意名次并列的情况,比如第二名有两个,则排名成绩在第三位的同学则是第四.后来上网查了下,很多网友均遇到过这个 ...
- 计算机设计表格成绩排名的教程,excel成绩表格数据排名次的教程
Excel中经常需要使用到排名次的技巧,成绩表格数据具体该如何排名呢?接下来是学习啦小编为大家带来的excel成绩表格数据排名次的教程,供大家参考. excel成绩表格数据排名次教程(一) 步骤1:不 ...
- Excel电子表格数值排序
1.RANK函数 RANK函数是Excel计算序数的主要工具,它的语法为:RANK(number,ref,order),其中number为参与计算的数字或含有数字的单元格,ref是对参与计算的数字单元 ...
- excel计算班级总分排名_在Excel中计算排名
excel计算班级总分排名 To do some research on sorting, I hauled one of the big, dusty Excel books off my shel ...
- excel设置自动排序123的详细教程
excel作为主要用于电脑编写的电子表格,主要包括了数据记录和整理.数据的加工和计算.数据的统计和分析等等功能,那么excel怎么设置自动排序123呢?下面小编要讲的内容就是excel设置自动排序教程 ...
- excel排名_表格技巧—如何在Excel中快速计算排名
在利用excel统计成绩的时候,往往会使用它的排名,如果一个一个排会造成工作效率非常低,那么如何快速排名呢?今天我们和大家分享的就是如何在excel中快速计算排名. 首先打开一张我们需要排名的exce ...
- VBA按列名称或是按表格标题给EXCEL表格做排序
VBA给EXCEL表格做排序 按列名称或是按标题给表格排序 按列名称或是按标题给表格排序 在VBA编程时,经常会对表格内容进行排序,为了方便对不同需求下的内容排序,编制了下面这个函数,此函数可以根据给 ...
- excel实现自动排序
excel实现自动排序 excel排序 输入数据后直接生成排序后的序列 案例 自定义序列选择 excel排序 主要展示如何实现excel的自动排序,以及如何按规定顺序排序. 输入数据后直接生成排序后的 ...
最新文章
- 美国拟将14项关键技术列入出口管制清单 商务部回应
- oracle addm报告
- C#高级技师语法,你会吗?
- LDR 、ADR介绍
- java dataset redis,利用Spring-Data-Redis和Jedis操作Redis缓存
- 使用ActiveReports for .net 进行报表开发(十)--交叉变换背景 (转)
- python文件IO中的二进制格式与文本格式
- js截取中英文字符串
- 随机数公式Random
- c# forbidden.html,C#Web API方法返回403 Forbidden
- IDS(Informix Dynamic Server)的基本概念总结
- 使用jsoup简单爬取微信公众号一些图片
- 链路不通或服务器没响应,连不通服务器服务怎么办(理论篇)
- vue3的pdf文件下载
- Qt技巧:获取QTextEdit文本内容
- C语言 程序 素数圈圈
- Unity 获得Animator下某个动画片段的时长
- Unity动画系统学习
- 【操作系统①】——操作系统的定义和功能、操作系统的四大特征【并发 共享 虚拟 异步】
- 一淘报告引发2012电商首战 当当再战京东
热门文章
- 勒索病毒服务器文件加密后缀,WannaCry勒索病毒文件加密密码结构
- c语言signed char,C语言 1字节signed char的范围为什么是-128~127?
- android 7.1 刷机后第一次开机概率性缓慢(2~4分钟)--ANR
- burpsuite入门,实用教程
- width、min-width、max-width之间的区别
- 申宝股票-区间下轨附近短线可低吸
- TFN 微缆气吹机T500W 吹缆机 配件齐全性价比的首选
- 中国石油大会呼吁确保物流人才能源供给稳定
- 视频监控项目--友善之臂---阿里云---QT---mjpg-streamer
- 在VM虚拟机linux小火车安装运行