ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: afan

[已解决] 如果取第n大的数

[复制链接]

TA的精华主题

TA的得分主题

发表于 2010-4-14 12:25 | 显示全部楼层
本帖已被收录到知识树中,索引项:FREQUENCY
学习一下frequency的用法

TA的精华主题

TA的得分主题

发表于 2010-9-9 09:14 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2010-10-24 23:34 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
原帖由 gdliyy 于 2005-5-30 23:21 发表

谁说的:)Frequency()可以直接支持内部数组运算的。

原来是可以支持内部数组运算的,学习了

TA的精华主题

TA的得分主题

发表于 2012-5-24 19:46 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2012-5-25 12:25 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
frequency函数的灵活运用,又学习了

TA的精华主题

TA的得分主题

发表于 2012-5-25 17:09 | 显示全部楼层
frequency 真是个好函数
我的第一想法:=(LARGE(A1:A5*1000,COUNTIF(A1:A5,LARGE(A1:A5,1))+1))/1000
当年论坛 好似天天华山论剑,好不热闹,有点生不逢时之感,呵呵!

TA的精华主题

TA的得分主题

发表于 2016-11-24 16:18 | 显示全部楼层
如果是查找 到的第几大的值有重复,如何能也能将重复的值也找到???

TA的精华主题

TA的得分主题

发表于 2020-6-2 23:01 | 显示全部楼层
jxksxx 发表于 2008-6-29 12:43
QUOTE:以下是引用apolloh在2005-1-25 19:28:00的发言:=LARGE(IF(FREQUENCY(A1:A5,A1:A5),A1:A5),2)老大: ...

提供一种理解方法。

先看FREQUENCY(A1:A5,A1:A5)。公式参数是两个数组,结果是一个数组。这里两个参数都是A1:A5。我们把它用表格写出来:
参数1:数据数组参数2:间隔点数组{=FREQUENCY(A1:A5,A1:A5)}
11
22
22
55
55


首先找到参数2中最小的数字,也就是1。然后从参数1中,找出≤1的数字,并输出个数。结果是1个。
参数1:数据数组参数2:间隔点数组{=FREQUENCY(A1:A5,A1:A5)}
111
22
22
55
55


然后我们把使用完的参数划掉,开始下一轮计算:
参数1:数据数组参数2:间隔点数组{=FREQUENCY(A1:A5,A1:A5)}
111
22
22
55
55


现在开始第二轮计算:再从剩下参数2中,找到最小的数字。现在参数2中最小的数字是2,这里有两个2,那我们用上面。而参数1剩下的数字中,≤2的结果有两个,于是FREQUENCY输出2。
参数1:数据数组参数2:间隔点数组{=FREQUENCY(A1:A5,A1:A5)}
111
222
22
55
55


再把用完的参数划掉。
参数1:数据数组参数2:间隔点数组{=FREQUENCY(A1:A5,A1:A5)}
111
222
22
55
55


现在有意思的事情来了。参数2中剩下最小的数字是2,但是参数1剩下的数字中,还有没有≤2的数字呢?当然没有!所以公式就输出0:
参数1:数据数组参数2:间隔点数组{=FREQUENCY(A1:A5,A1:A5)}
111
222
220
55
55


之后如法炮制,最终结果是:
参数1:数据数组参数2:间隔点数组{=FREQUENCY(A1:A5,A1:A5)}
111
222
220
552
550


这里提一下,FREQUENCY输出的数组要比参数2多一个结果。本例多出的那个结果永远是0,这里不做解释了。所以
{=FREQUENCY(A1:A5,A1:A5)}={1;2;0;2;0;0}

然后=IF(FREQUENCY(A1:A5,A1:A5),A1:A5),也就是:
=IF({1;2;0;2;0;0},{1;2;2;5;5})

再写成表格:
参数1参数2=IF({1;2;0;2;0;0},{1;2;2;5;5})
111
222
02FALSE
255
05FALSE
0
FALSE

这里利用了=IF(X,Y),若X<>0输出Y,X=0输入FALSE的特性。

也就有了
{=IF(FREQUENCY(A1:A5,A1:A5),A1:A5)}={1;2;FALSE;5;FALSE;FALSE}

最后用LARGE取第2大的数:
=LARGE(IF(FREQUENCY(A1:A5,A1:A5),A1:A5),2)
=LARGE({1;2;FALSE;5;FALSE;FALSE},2)
=2
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-5-22 03:42 , Processed in 1.046050 second(s), 15 queries , Gzip On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表