ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[函数用法讨论系列11] 第五个查找函数--FREQUENCY的搜索机制。

[复制链接]

TA的精华主题

TA的得分主题

发表于 2005-9-14 10:09 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
无论怎样,楼主发挥了frequency的用法.是可以肯定的.

TA的精华主题

TA的得分主题

发表于 2005-10-11 19:04 | 显示全部楼层
我怎么打不开啊

TA的精华主题

TA的得分主题

发表于 2005-10-11 23:51 | 显示全部楼层

不可否认的是:FREQUENCY是一个统计函数。

但由于它在对第2个参数的处理方式是:先对参数2的数据进行排序,列出区间,再进行各区间进行统计, http://club.excelhome.net/viewth ... D=382537&skin=1

这个过程当然肯定包含有对数据的遍历过程,虽然我没看楼主的原件,可以想象得出楼主的思路,应该是通过参数2的区间来定位查找值的位置的。谢谢楼主的共享。

另外:而且对于统计速度,Frequency肯定比Countif()要快,在上次的试题中已经证明了这一点。 http://club.excelhome.net/dispbb ... p;skin=0&page=2

TA的精华主题

TA的得分主题

发表于 2005-12-6 22:07 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2006-6-1 12:38 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2006-6-1 16:34 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
真搞不懂他们怎么想出来的

TA的精华主题

TA的得分主题

发表于 2006-9-25 16:32 | 显示全部楼层
我再顶一下,这么好的帖子应该让更多的人知道。

TA的精华主题

TA的得分主题

发表于 2006-9-25 16:54 | 显示全部楼层
QUOTE:
以下是引用chenhuafu在2006-9-25 16:32:11的发言:
我再顶一下,这么好的帖子应该让更多的人知道。

至少我知道了!

:)

这个东东好是好!

不过应该很少会用到!我会用下面数组公式多一些!

=MAX(IF(FREQUENCY(C1,A1:A18),A1:A18))

{=MIN(IF(((A1:A18-C1)>=0),A1:A18))}

=MAX(IF(FREQUENCY(-C1,-A1:A18),A1:A18))

{=MAX(IF(((A1:A18-C1)<=0),A1:A18))}

谢谢楼主分享!学习了!

————————————————————————————————————————————————

当数据60000行时候!

=MAX(IF(FREQUENCY(C1,A1:A18),A1:A18))

=MAX(IF(FREQUENCY(-C1,-A1:A18),A1:A18))

速度明显慢于上面数组公式!应该跟楼主说的那样!FREQUENCY 还要先进行排序的原因吧!

[此贴子已经被作者于2006-9-26 0:35:50编辑过]

TA的精华主题

TA的得分主题

发表于 2006-12-12 23:54 | 显示全部楼层
QUOTE:
以下是引用gdliyy在2005-10-11 23:51:43的发言:

不可否认的是:FREQUENCY是一个统计函数。

但由于它在对第2个参数的处理方式是:先对参数2的数据进行排序,列出区间,再进行各区间进行统计,

有说得不对的地方先请gdliyy版主见凉。

我也认为FREQUENCY是一个统计函数,但偶认为gdliyy版主对FREQUENCY的第2个参数的处理方式理解有误。

请先看一下面这个公式,结果得到的是什么?=FREQUENCY({265;300;100;260},{250;300;200;150}) ,请先把答案写在一个单元格中,再试验公式结果, 看看你的答案对了吗?

对FREQUENCY的第1、2参数的处理方式,我的理解是这样的:计算到第2参数中的某个数据时,在第2参数中找到比这个数小一级的数,然后对第1参数统计,把结果存入结果数组的相应位置,再把第1参数已统计过的数据打上标记,即下次不再参与新的统计。

例如上面的公式结果是 {0;3;0;1;0} ,它的运算过程是:

·第2参数的首个数据是250,在第2参数中找到比250小一级的数200,然后在第1参数X中统计 200< X <=250 的个数,得到0,这个0对应的就是公式结果的第1个0;

·接着看第2参数的下一个数据300,在第2参数中找到比300小一级的数250,然后在第1参数X中统计 250< X <=300 的个数,得到3,这个3对应的就是公式结果的第2个数据3;

·再看下一个数据200,在第2参数中找到比200小一级的数150,然后在第1参数X中统计 150< X <=200的个数,得到0,这个0对应的就是公式结果的第2个0了;

·最后是150,在第2参数中没能找到比150小一级的数,所以取在第1参数X中统计 X <=150的个数,得到1,这个1就是公式结果中的第四个位置的1了;

·现在第2参数的所有数据都用完了,看看第1参数中还多少个没有统计到的就放到第五个位置了。

总的结果就是你看到的 {0;3;0;1;0} 了。

后话:然而计算机是怎么在第2参数中找到比当前数据小一级的数,是否对第2参数先排序再找呢?这个我就不清楚了。

[此贴子已经被作者于2006-12-13 0:02:54编辑过]

TA的精华主题

TA的得分主题

发表于 2006-12-13 00:50 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

谢谢楼主分享FREQUENCY的经验.

FREQUENCY在查找不重复数值型数据时比MATCH更加简洁:

SMALL(IF(FREQUENCY(DATA,DATA),DATA),INDIRECT("1:"SUM(1/COUNTIF(DATA,DATA))))

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-24 11:13 , Processed in 0.043306 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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