ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[分享] HI,来吧,咱们一起来边练边学FREQUENCY!

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2014-10-13 22:54 | 显示全部楼层
本帖已被收录到知识树中,索引项:FREQUENCY
香川群子 发表于 2014-10-13 12:45
对Frequency()工作表函数、进行VBA逆向工程破解,得到如下自定义函数:

=frq([统计对象数据区域 DataR ...

  我测试的数据如下:

成绩
100
60
100
80
88
90
100
56
100
77
23
77
77
88
22

TA的精华主题

TA的得分主题

发表于 2014-10-13 23:15 | 显示全部楼层
本帖最后由 丢丢表格 于 2014-10-13 23:19 编辑
aoe1981 发表于 2014-10-13 22:54
  我测试的数据如下:

Frequency() 这个函数工作原理非常简单
它先判断要分几段 ,建立 N+1 个 2 维列储存数组, 并清为 0 值。
再把数据列从头至尾历一次, 以对应数值  在对应容器内 计数 。

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2014-10-13 23:36 | 显示全部楼层
aoe1981 发表于 2014-10-13 22:54
  我测试的数据如下:

就是这样简单


未命名.GIF

TA的精华主题

TA的得分主题

发表于 2014-10-14 07:47 | 显示全部楼层
aoe1981 发表于 2014-10-13 22:53
  香川,代码没看明白,但是测试出了一个不一样的地方:
  
  个人感觉这个函数可以不用写这么复 ...

嗯。46代码有bug……统计方式错了。

现在已经更新。

正确的应该是 <=
    For i = 0 To n - 1
        If t <= bin(i) Then Exit For
    Next
    fq(i) = fq(i) + 1

呵呵。

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-10-14 09:17 | 显示全部楼层
本帖最后由 看见星光 于 2014-10-15 21:15 编辑

       关于frequency函数,坦白的说,我并没有什么鸭梨障。可能是我接触他之前,已经玩透了几个函数,晓得函数就是个游戏,按规则办事,见招拆招,上有政策,下有对策,就是玩呗,所以我态度轻浮,轻松上阵,不像很多新人,被一些传言吓倒,那啥,未战先嫩。

       一言以蔽之,我个人觉得,frequency是一个分段计频函数(这话似乎很废话,但其实不是)。主干是分段计频,其它的规矩什么什么都是枝叶。大家可以拨弄枝叶,但不要被枝叶迷眼,更不要把枝叶当成主干去绞脑汁。知道有那些规则,知道如何守规则,知道如何规避规则就好。

       重点是分段和计频。

       分段就是分什么样的段呗,由此可以把frequency的参数做各种有趣的布局和扩展,特别是内存数组方面,这是frequency最有趣也是最强大的地方,我觉得。
提取频数也是很有趣的地方,和INDEX、TEXT等函数搭配,也有几个神奇的小技巧。

       如果可以,建议大家把frequency、countif以及mode、rank等函数做一个对比学习,会对每个函数有更深的认识更多的收获。

       特别是countif,大部分人应该都比较早接触它,但是正好比你首先认识的女孩,往往是你所不了解的女孩,大部分人,其实未必了解countif……没错,我说的那个女孩,是你的小学同学,哈哈。

       凡事就怕比,可以先拿countif和frequency做比较,这就好比拿你的小学同学和初中同学做比较(我可没说初恋情人和现任老婆老公做比较,谁这么想是谁心里有鬼,耶!!),结果不言自明哩。

       这四个函数对比论述我可写不来。我是一个随便的人,理论的东西,向来反感。我比较看中练和悟。有些事你琢磨半天,还是不明白,但你去做了,做完后回头再看,不禁恍然大悟,这便是练和悟。有个叫李宇春的好~姑娘~说过,有些事,再不去做就晚啦。节奏这么快的年代,等你完完全全想明白,再去做,就更晚啦,对不?嘿嘿。所以,咱们这个帖子的主题,叫做边练边学!——当然,不去写这个论述,最大的真正的原因是,我的功力也不够也。

       这事我觉得Bodhidharma可以来做,他的数组三都已经进宫做太监一年多了,强烈鼓励大家拉他出宫。http://club.excelhome.net/thread-1061514-1-1.html

       好啦,乱七八糟的就说到这,其它的咱们见题再论。
       下面发第四道题。

       做个预热。再过两题的样子,难度会提到两颗星,再过六题,难度会提升到竞赛的水平……大家记得常来,特别是潜水的姑娘们,我这么辛苦,都是为了鲜花和你们的青眼相加哇。


frequency (4) .rar (57.04 KB, 下载次数: 301)
4.jpg










评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2014-10-14 09:30 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2014-10-14 09:34 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
  1. =COUNT(1/FREQUENCY(MATCH(G82:G93,G82:G93,),ROW(1:10)))
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-10-14 09:44 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
lfspecter 发表于 2014-10-14 09:34

老大,两个函数都有点小问题。第一个不够简,第二个如果十二个姓名都不重复,分段就有问题了呀。

TA的精华主题

TA的得分主题

发表于 2014-10-14 09:46 | 显示全部楼层
lfspecter 发表于 2014-10-14 09:34

来一个 FREQUENCY    COUNTIF   结合函数

=FREQUENCY(COUNTIF(OFFSET(G82,,,ROW(1:12)),G82:G93),1)

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2014-10-14 09:49 | 显示全部楼层
本帖最后由 13732120571 于 2014-10-14 09:54 编辑

题四
1)
  1. =COUNT(0/FREQUENCY(B82:B93,B82:B93))
复制代码
2)再减点
  1. =COUNT(0/FREQUENCY(MATCH(G82:G93,G82:G93,),ROW(1:12)))
复制代码
  1. =COUNT(MATCH(ROW(1:12),MATCH(G82:G93,G82:G93,),))
复制代码
  1. =COUNT(0/(ROW(1:12)=MATCH(G82:G93,G82:G93,)))
复制代码
  1. =SUM(N(COUNTIF(OFFSET(G82,,,ROW(1:12),),G82:G93)=1))
复制代码
  1. =SUM(1/COUNTIF(G82:G93,G82:G93))
复制代码
数组公式

评分

2

查看全部评分

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

本版积分规则

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

GMT+8, 2024-4-27 12:05 , Processed in 0.045169 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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