ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

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

[复制链接]

TA的精华主题

TA的得分主题

发表于 2005-8-18 17:19 | 显示全部楼层 |阅读模式

你可能会奇怪,在EXCEL中,应该只有四个查找函数--MATCH、LOOKUP、VLOOKUP和HLOOKUP呀?FREQUENCY算什么查找函数呢?且慢,先做一下我在附件中的实验,你就会知道我为什么把FREQUENCY称作第五个查找函数了。

W6OonbEJ.rar (225.66 KB, 下载次数: 1825)
[此贴子已经被apolloh于2005-8-23 15:20:37编辑过]

Q1V8hflA.rar

230 KB, 下载次数: 1738

[原创]第五个查找函数--FREQUENCY的搜索机制。

TA的精华主题

TA的得分主题

发表于 2005-8-18 18:32 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
呵呵,第一次听说!谢谢。

TA的精华主题

TA的得分主题

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

呵,照着你的理论,我找到第六个查找函数

=MAX(IF(COUNTIF(C1,">="&A1:A18),A1:A18))

ctrl+shift+enter结束。

TA的精华主题

TA的得分主题

发表于 2005-8-19 06:45 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
onkey 兄,附件損壞打不開,能否傳到小弟 email : tsenglkl@hotmail.com 謝謝 !!!
[此贴子已经被作者于2005-8-19 9:46:36编辑过]

TA的精华主题

TA的得分主题

发表于 2005-8-19 08:59 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

增加一个,不过有抄袭之嫌啊,

=LARGE(IF(COUNTIF(C1,">="&A1:A18),A1:A18),2)

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-8-19 10:17 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

To apolloh & hutengyao,

我觉得,作为一个查找函数,当找不到要找的数时,应该要返回#N/A,而不是0,否则若在待查找区域中存在0的话,就会引起混乱,不知道究竞是否找到。若用Countif的要实现这个功能的话,还要再增加其它判断函数。

另外,Frequency的本质是查找,返回频率统计只是对最终查找结果的一种表现,它返回比第二个参数(也就是待查区域)元素数目多一的数组用以存放对找不到的数值的计数正正体现了查找这一本质。而Countif则重在计数,而非查找。

不能否认,由于Frequency返回的结果只是对出现频率的统计而非搜索的结果,要实现真正的查找还需要其它函数的配合,实验1就是这样。但这并不能否定其查找这一本质。

最后,我写这篇贴子的目的不是证明Frequency是完全的查找函数,只是探究一下,其核心部份--查找的工作机制,认读者知道何时使用和如何使用之一函数,因此请留意实验2和实验3的结论。

TA的精华主题

TA的得分主题

发表于 2005-8-19 10:56 | 显示全部楼层

呵呵,我把你的原话改一下

另外,Countif的本质是查找,返回计数只是对最终查找结果的一种表现,它返回比第二个参数(也就是待查区域)元素数目一样多的数组用以存放对找不到的数值的计数正正体现了查找这一本质。

Countif也是要历遍所有数据才能得到结果的,这个Frequency是一样的。

其实所有的条件统计函数都是需要先执行查找的,而之所以他们不被称为查找函数而被称作统计函数,因为他们和查找函数不同,他们的实质是在执行统计,而不是定位或返回定位的结果。

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-8-19 11:25 | 显示全部楼层

但Frequency会把第一个参数中的所有待查找数值看作一个整体,因此为了节约之后的查找和统计时间,Frequency会先将第二个参数中的数据进行升序排序,之后才逐一用二分法查找第一个参数中的数值并进行统计,这是Countif所不具备的.

总的来说,Counftif和Match(第3个参数取0)是完全的遍历,它在遍历之前不做任何动作,而Frequency并不是真正的遍历,它会先排序,再用二分法去查找,若不考虑排序所花的时间的话,Frequency比Countif等要快,即使考虑排序所花的时间,当要查找的数据量很多的时候,这些耗时完全可以忽略不计。这就是我根据实验3所作的结论。

简而言之,Countif是"边比较边计数",Frequency是"先排序再查找最后统计"。因此,Countif并非查找,而Frequency才可以算得上是查找。

[此贴子已经被作者于2005-8-19 11:45:42编辑过]

TA的精华主题

TA的得分主题

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

你好!ONKEY谢谢你最近的许多分享。可以说这些帖子让我走出了自我封闭的思维,至少我可以站在另一个角度来考虑问题,这是我之前想自我突破难以办到的。也许你的想法,一段时间后就是真理,也许不是,但这些都不重要,重要的是你开拓了我们的思路。

[em08]
[此贴子已经被作者于2005-8-23 15:24:16编辑过]

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2005-8-23 15:50 | 显示全部楼层

插上一句:说得不对,别扔鸡蛋。

如果按现有的函数分类来说:将一个函数划到哪个类别是以其最终目的来进行划分的,而不是按这个函数用了什么方法达到目的来划分。划分类别主要的目的是方便用户尽快找到所需要的函数,缩小用户查找范围。例如,当我们需要一个来统计频率的函数时,我想,大部分人还是从统计函数或数学运算中去找,很少有人从文本函数或是查找函数中找。

从这一点看,FREQUENCY还是一个统计函数。

此外,楼主的探索精神值得学习。

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

本版积分规则

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

GMT+8, 2024-11-24 10:51 , Processed in 0.037493 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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