FREQUENCY函数的使用

FREQUENCY函数的使用
FREQUENCY函数的使用

FREQUENCY函数的使用

语法:

FREQUENCY(数据源,分段点)

结果:

以分段点为间隔,统计数据源值在各段出现的频数

其中:

数据源:为对一行/一列单元格或一个连续的单元格区域的引用

分段点:为对一行/一列单元格或一个连续的单元格区域的引用

数据引用支持跨工作表、工作簿

公式输入方法:

以多单元格数组方式输入,且必须是纵向数组;

所选单元格数比分段点个数大1,以统计数据源大于分段点最大值的频数

一、常规用法

数据源分段点函数的常规用法是进行频率统计,

78602示例:统计数据源区各分数在分段点各段的频数。

80806要统计数据源在分段点出现的频率,选择C16:C19,输入数组67900同时按下ctrl+shift+enter结束

982每段计算小于等于此分段点、大于上一分段点的频数;

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·支持“块”区域引用

数据源是一个连续的区域的情况前面已经用过;8060

80分段点是一个“块”区域,情况怎样呢?

90

60

可以看出公式区域按照先行后列的顺序统计频数,文本/空格、乱序、重复数据的规律同样有效:

三、函数应用

1·函数特性3的应用

match

A·用于统计不重复值个数

12aa ①如何统计左边数据区域内的不重复值?

22ab 大家一定会想到这个公式:633bc 但也可以用frequency来解决,步骤如下:41bb 1.用match函数返回个数据在数据列中的位置

20ab 对于查找目标,match函数都返回数列中首次出现的位置

61ac 2.对于以上结果,用frequency特性,让重复的数字变为零

10aa 可以用多种方法搭配数据源和分段点

30bc 3.统计上一步结果中有多少个非零数字,即得答案

91ba 统计非零数字也有不同的方法

3

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ⅰ找到每个值在数列中首次出现的

ⅱ用frequency函数让空白单元格

frequen

ⅲ上一步数据作为if函数的条件,

ⅳ让上一步的位置值在数列前端返

ⅴ根据上一步的位置值返回原值;

注:为了简化公式,把数据值定义为名称

每一步都是用多单元格数组的形式生

公式不依赖数据列z的位置,如果z是

去错不彻底,最后的结果用条件格式

如果数据z是一个方形的区域怎么办?

可先用index函数转换成列数组,参看

gdliyy版主的解法:

107frequency函数引用块状区域,作为if函数的条件

108

109

2·用于计算符合条件的最大连续/间隔值

在以下两期足彩中,每期有10场比赛,胜3平1负0:

这里巧妙利用了单元格函数所在的位置,满足/不满足条件的各返回一列数;

两列数分别作为frequency函数的数据源和分段点进行统计;

用max返回统计结果的最大值

再看下面这个例子

难点在于如何引用整个区域,但针对行的信息来统计,

好在chenjun版主早有解决办法,

再结合countif函数的三维引用,

可以用下面的公式直接得到答案:

3

注:如何计算有50出现的列的最大连续列数呢?2

FREQUENCY原来仅是一个计算频数的统计函数,我们利用它的特性,

并结合其他一些函数,发现它给我们带来了意想不到的效果。

如果大家还有此函数的其他用法,请补充。

择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函数转换成列数组,参看“题目三”的一种解法:

现的行号留空)

相关文档
最新文档