ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

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

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2014-10-12 23:13 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖已被收录到知识树中,索引项:FREQUENCY
强人真多啊。

TA的精华主题

TA的得分主题

发表于 2014-10-13 09:05 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
5. 对于Data_array的重复数据,只在分段点首次出现时统计频数,其余重复出现的分段点统计为0。

第5条说明,有错误(红字部分对象错误),且不够准确、详实。

我给予更正如下:
5. 也支持Bins_array数据乱序,并允许分段点重复。
    因此,对于Bins_array中重复出现的分段点值数据,只在该分段点首次出现时返回其统计频数
    其后重复出现的分段点返回统计频数=0 (否则会造成总数被重复统计)。

…………
例如:
Data_array: 1,2,2,3,3,3,4,4,4,4,5,6,7,8,9
Bins_array-1:  1,2,3,4 时返回结果={1,2,3,4,5}  【比Bins_array个数多1个


Bins_array-2:  4,1,3,2 时返回结果={4,1,3,2,5}  【支持乱序,最后1个返回大于分段最大值的频数


Bins_array-3:  1,1,2,2,3,3,4,4 时返回结果={1,0,2,0,3,0,4,0,5}  
【支持分段点重复,仅在分段点首次出现时返回结果。其后重复的分段点返回=0。最后1个返回大于分段最大值的频数


Bins_array-4:  3,1,4,3,2,1,4 时返回结果={3,1,4,0,2,0,0,5}  
【支持乱序、支持分段点重复,仅在分段点首次出现时返回结果。其后重复的分段点返回=0。最后1个返回大于分段最大值的频数



以上。






点评

一开始也感觉那张图片中的说明有点令人糊涂,当时怯于对F不是怎么了解,便没说,这下您倒是提到了,挺是激动!!!赞!!!  发表于 2014-10-13 12:49

评分

10

查看全部评分

TA的精华主题

TA的得分主题

发表于 2014-10-13 09:18 | 显示全部楼层

TA的精华主题

TA的得分主题

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


第二题的答案更新在附件里,其中意思参见裙子老师32楼的说明。

第三题:去重复求和以及去重复排序(从大到小) frequency (3) .rar (34.31 KB, 下载次数: 209)
3.jpg

评分

3

查看全部评分

TA的精华主题

TA的得分主题

发表于 2014-10-13 10:00 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
1)去重
  1. =SUM(IF(FREQUENCY(B64:B75,B64:B75),B64:B75))
复制代码
2)排序
  1. =IFERROR(LARGE(IF(FREQUENCY(B$64:B$75,B$64:B$75),B$64:B$75),ROW(A1)),"")
复制代码
  1. =TEXT(LARGE($B$64:$B$75-(MATCH($B$64:$B$75,$B$64:$B$75,)<>ROW($1:$12))/1%%,ROW(A1)),"0;;")
复制代码
数组公式

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2014-10-13 10:17 | 显示全部楼层
看见星光 发表于 2014-10-13 09:43
第三题:去重复求和以及去重复排序(从大到小)

=SUM(IF(FREQUENCY(B64:B75,B64:B75)>0,B64:B75))
=LARGE(IF(FREQUENCY($G$64:$G$75,$G$64:$G$75)>0,$G$64:$G$75),ROW(A1))

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2014-10-13 10:37 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
zhaojiaoyang200 发表于 2014-10-11 19:23
这个公式生成了的结果是一个垂直数组{4;2},即小于等于89的个数(4)与大于89的个数(2)我还是把公式写完整 ...

从来没用过frequecny函数,路过学习下,不过弱弱地问下,啥是垂直数组?我按你们的公式,单元格只显示4,2怎么看不到?

点评

在单元格,用鼠标把公式整个选中,然后按F9。或者随意选一个4*4的单元格区域,按Ctrl+Shift+Enter结束公式  发表于 2014-10-13 10:45

TA的精华主题

TA的得分主题

发表于 2014-10-13 11:25 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
留下足迹,好好学习!

TA的精华主题

TA的得分主题

发表于 2014-10-13 11:44 | 显示全部楼层
本帖最后由 香川群子 于 2014-10-13 13:02 编辑

Bins_array数据结构对函数返回结果影响的补充:

1. Frequency函数返回的结果,是一个以Bins_array有效数值个数+1的大小的数组,即:
如果m个单元格范围内不含空单元格,则=单元格总数m+1

如果m个单元格范围内含n个空格,则=单元格总数m-空单元格数n+1
或直接理解为=不含空单元格的有效单元格个数(m-n)+1

2.返回结果时,仅按上述有效值+1对应大小的区域返回函数统计结果,
超出有效值+1部分一律返回#N/A

3. 按分段点的有效数值从小到大排序(此时空单元格都在最后),然后进行分段统计,得到频数统计结果。
然后按原Bins_array顺序(但要把所有空单元格放到最后)返回对应统计结果。其中,非首次出现的分段点返回=0。

4. >最大分段点的频数统计结果,放入最后一个有效单元格。

因此,当分段点区域内含有空单元格时,会严重影响返回结果的直观对应性(即很有可能不能一一对应。)

呵呵,有点小复杂的哦。

具体可以参考我下面帖子中写的VBA逆向工程自定义函数内容,对于实际计算原理会有更清晰的认识。




评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2014-10-13 12:07 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-21 23:30 , Processed in 0.043701 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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