FREQUENCY函数的使用
FREQUENCY函数的使用
语法:Excel https://www.360docs.net/doc/da6737374.html, FREQUENCY(数据源,分段点)
结果:
以分段点为间隔,统计数据源值在各段出现的频数https://www.360docs.net/doc/da6737374.html,/d 其中:
数据源:为对一行/一列单元格或一个连续的单元格区域的引用
分段点:为对一行/一列单元格或一个连续的单元格区域的引用
数据引用支持跨工作表、工作簿
公式输入方法:
以多单元格数组方式输入,且必须是纵向数组;
所选单元格数比分段点个数大1,以统计数据源大于分段点最大值的频数
一、常规用法
数据源分段点函数的常规用法是进行频率统计,
78602>=60示例:统计数据源区各分数在分段点各段的频数。
80806<=80,>60要统计数据源在分段点出现的频率,选择C16:C19,输入数组67900<=90,>80同时按下ctrl+shift+enter结束
982>90每段计算小于等于此分段点、大于上一分段点的频数;
60
6959.9不及格1假设小于60为不及格;大于等于60小于80为及格;
8079.9及格5大于等于80小于90为良;大于等于90为优,
9589.9良2必须对分段点进行修正才能得到正确的统计数
77优2
56
二、函数特性
1·忽略文本或空白单元格
数据源区域出现文本或空格,只统计数据,其他没有影响
89缺考8960160
5665803良779090480
8877981
分段点出现文本或空格,忽略文本或空格,只对数值进行分段频率统计,及格
所需结果区域也相应减少,多余区域由#N/A填充:90 2·支持数据乱序
支持数据源的乱序,这一点不需说明803
分段点的乱序:904
对于每一分段点,统计小于等于此分段点,601
大于上一分段点的频数,1
最后一格始终统计大于最大分段点的频数:803
3·支持重复数据601
支持数据源的数据重复,这一点勿需说明800
对于分段点出现重复数据:904
只在分段点首次出现时统计频数,600
重复出现的分段点的统计数都为0:1
从下文可以看到,正是有了这点特性使得此函数有许多“妙用”
4·支持“块”区域引用
数据源是一个连续的区域的情况前面已经用过;806080分段点是一个“块”区域,情况怎样呢?
9060
可以看出公式区域按照先行后列的顺序统计频数,
文本/空格、乱序、重复数据的规律同样有效:三、函数应用1·函数特性3的应用match A·用于统计不重复值个数12aa
①如何统计左边数据区域内的不重复值?22ab
大家一定会想到这个公式:633bc
但也可以用frequency来解决,步骤如下:41bb
1.用match函数返回各数据在数据列中的位置20ab
对于查找目标,match函数都返回数列中首次出现的位置61ac
2.对于以上结果,用frequency特性,让重复的数字变为零10aa
可以用多种方法搭配数据源和分段点30bc
3.统计上一步结果中有多少个非零数字,即得答案91ba
统计非零数字也有不同的方法30
bc 6frequency生成的数组跟零判断大小,生成一组逻辑值,转换后用sum汇总
6对frequency生成的数组取倒数,生成一组分数和 #DIV/0! ,用count计算数字,排除错误值frequency用在这里并不显得简单,但它确有用武之地。看下面的例子:
a9i6o\p/bcad)fo(9u7 ,y65t%f54.r3df>6j2,mn#a ②如何统计上面单元格中的字符串中有多少个不重复值? 统计的对象在一个单元格中,怎么办? 用frequency来解决,思路和上面基本相同: 52用find返回各字符在字符串中第一次出现的位置,形成一列数组; 用frequency特性3,让非首次出现的字符返回的频数为零; 取倒数后用count统计数字个数。 或者用字符对应的ASC码作为frequency取数的对象:52 当然,也可以用以下方法来解决,思路类似用countif:52 B·frequency函数作为if函数的判断条件 由于frequency函数生成的值为非负整数,可用来作为if的判断条件 1 ③2apolloh 2步骤:55参考:https://www.360docs.net/doc/da6737374.html,/dispbbs.asp?BoardID=3&ID=80266 ⅰ找到每个值在数列中首次出现的 frequen ⅱ用frequency函数让空白单元格 ⅲ上一步数据作为if函数的条件, ⅳ让上一步的位置值在数列前端返 ⅴ根据上一步的位置值返回原值; 注:为了简化公式,把数据值定义为名称 每一步都是用多单元格数组的形式生 公式不依赖数据列z的位置,如果z是 去错不彻底,最后的结果用条件格式 如果数据z是一个方形的区域怎么办? 可先用index函数转换成列数组,参看 参考:https://www.360docs.net/doc/da6737374.html,/dis 2·用于计算符合条件的最大连续/间隔值 在以下两期足彩中,每期有10场比赛,胜3平1负0: 这里巧妙利用了单元格函数所在的位置,满足/不满足条件的各返回一列数; 两列数分别作为frequency函数的数据源和分段点进行统计; 用max返回统计结果的最大值 再看下面这个例子 ⑦ 49545149514651 49505452505349 难点在于如何引用整个区域,但针对行的信息来统计, 好在chenjun版主早有解决办法, 再结合countif函数的三维引用, 可以用下面的公式直接得到答案: 3 注:如何计算有50出现的列的最大连续列数呢?4 FREQUENCY原来仅是一个计算频数的统计函数,我们利用它的特性, 并结合其他一些函数,发现它给我们带来了意想不到的效果。 如果大家还有此函数的其他用法,请补充。 Excel https://www.360docs.net/doc/da6737374.html, snowpeak 2005-3-27 https://www.360docs.net/doc/da6737374.html,/dispbbs.asp?boardid=3&id=89154 择C16:C19,输入数组公式, 分段点的频数; 1 3 4 1 #N/A #N/A #N/A 1 4 1 #N/A equency 2注: 2frequency函数的输入区域选择10或11,效果是一样的 3因为第11个频数肯定是零 1 0第二种方法中的row目前是数出来的, 1实际中可以用row(indirect("1:"&counta(data)))自动算出 1 计算数字,排除错误值 "'"?f/as3u9.d※&【『★▲ 值在数列中首次出现的位置; ncy函数让空白单元格和重复值返回零; 据作为if函数的条件,将非零值返回在数列中的位置; 的位置值在数列前端返回; 步的位置值返回原值; 式,把数据值定义为名称z; 用多单元格数组的形式生成; 数据列z的位置,如果z是内存数组,公式同样有效; ,最后的结果用条件格式不显示错误值; 是一个方形的区域怎么办? ex函数转换成列数组,参看“题目三”的一种解法: https://www.360docs.net/doc/da6737374.html,/dispbbs.asp?boardid=3&star=4&replyid=61548&id=24707&skin=0&page=1现的行号留空)