Excel Frequency函数使用方法的6个实例,含统计不同分数段人数、横向和连续出现次数统计

亮术网 2019-10-14 本网原创

在 Excel 中,Frequency函数用于统计数值在指定区域内的出现频率,并以垂直数组的形式返回统计结果。Frequency函数不是统计某个数值在指定区间的出现频率而是统计指定区间有多少个数字。

Frequency函数比较典型的应用是统计不同分数段和不同年龄段的人数,该应用比较简单,不需要与其它函数组合。但若要实现横向统计或连续出现次数统计,则需要与 Transpose、Max、Row 函数组合,例如 Transpose + Frequency + Row 可实现横向统计。

 

一、Excel Frequency函数的语法

1、表达式:FREQUENCY(Data_Array, Bins_Array)

中文表达式:频率计数(数值数组或对数值单元格的引用, 区间数组)

 

2、说明:

A、如果 Data_Array 中没有数值,Frequency函数只返回一个零数组。另外,Frequency函数忽略空白和文本。

B、如果 Bins_Array 中无数值,Frequency函数将返回 Data_Array 中的元素个数。

C、Frequency函数返回的数组元素比 Bins_Array 的元素多一个,多出的元素为大于最高间隔数值的计数,具体见下文的实例。

D、如果要求Frequency函数返回数组,必须以数组形式输入,即输入完公式后要按 Ctrl + Shift + 回车。例如要把不同区间的统计结果填充到相邻单元格,则选中相邻单元格后,就需要按 Ctrl + Shift + 回车,具体操作见下文的实例。

 

 

二、Excel Frequency函数的使用方法及实例

(一)Frequency函数忽略空白和文本及返回的数组元素比 Bins_Array 的元素多一个的实例

1、双击 C2 单元格,把公式 =INDEX(FREQUENCY(A2:A6,B2:B3),2) 复制到 C2,按 Ctrl + Shift + 回车(Excel 2016 也可以直接按回车),返回 2;按住 Alt,依次按 M 和 V,打开“公式求值”窗口,按回车求值,则 Frequency函数返回数组{1;2;0};操作过程步骤,如图1所示:

Excel Frequency函数的使用方法及实例

图1

 

2、公式 =INDEX(FREQUENCY(A2:A6,B2:B3),2) 说明:

A、A2:A6 为Frequency函数的引用单元格区域,该区域有空单元格和文本,但它们被忽略;B2:B3 为区间数组,可分为三个区间,第一个为小于等于 5,第二个为大于 5 且小于等于 10,第三个为大于 10。

B、执行时,第一次在 A2:A6 中统计第一个区间(即小于等于 5)的数值出现频率,该区间只有一个 5,它的出现频率为 1,因此返回 1;第二次在 A2:A6 中统计第二个区间(即大于 5 且小于等于 10)的数值出现频率,该区间有 8 和 10 两个数,它们的出现频率各为 1,因此返回 2(返回的结果是该区间各数出现频率之和);第三次在 A2:A6 中统计第三个区间(即大于 10)的数值出现频率,由于无大于 10 的数值,因此返回 0。

C、则 FREQUENCY(A2:A6,B2:B3) 最后返回 {1;2;0},Bins_Array 参数 B2:B3 只有两个元素,而返回数组 {1;2;0} 有三个元素,最后一个元素 0 是统计第三个区间(即大于 10)的数值出现频率。

D、则公式变为 =INDEX({1;2;0},2),最后用Index函数返回数组中第二行第一列的数值,即返回 2。这里之所以要用Index函数,是因为仅用Frequency函数若不选中相邻单元格无法返回数组。

 

(二)Frequency函数返回一个零数组的实例

1、双击 A8 单元格,把公式 =FREQUENCY(A2:A7,A2:A7) 复制到 A8,按回车,返回 0;操作过程步骤,如图2所示:

Excel Frequency函数返回一个零数组的实例

图2

2、公式 =FREQUENCY(A2:A7,A2:A7) 说明:

公式的两个参数都为 A2:A7,由于该区域全为文本,而Frequency函数忽略文本,因此结果返回 0。

 

(三)有重复数字与把不同区间的统计结果填充到相邻单元格的实例

1、框选 C2:C3,输入等号 =,然后按 Ctrl + V 把公式 FREQUENCY(A2:A7,B2:B3) 粘贴到 = 后,按 Ctrl + Shift + 回车,则选中单元格都填上相应的统计结果;操作过程步骤,如图3所示:

Excel Frequency函数有重复数字与把不同区间的统计结果填充到相邻单元格的实例

图3

2、公式说明:

A、C2 中的结果 3 是 A2:A7 中小于等于 5 的数值个数,该区间的共有两个 5 和一个 3,加起来恰好是 3 个数值,由此可知Frequency函数统计的是区间的数值个数,而不是某个数字的个数。

B、C3 中的结果 8 是 A2:A7 中大于 5 且小于等于 10 的数值个数,该区间有 6、8 和 10,也是 3 个数值。

C、由于同时框选 C2:C3 且同时填充公式,它们已经组成一个组,不能单独修改或删除,只有同时选中它们才能修改或删除。

 

 

三、Excel Frequency函数的应用实例

(一)统计不同分数段的人数实例

1、假如要统计不及格、60-69、70-79、80-89、90-99 和 100 分的学生人数。框选 D2:D7,输入等号 =,把公式 FREQUENCY(B2:B28,C2:C6-1) 复制到 = 后,按 Ctrl + Shift + 回车,统计出不同分数段的学生人数;操作过程步骤,如图4所示:

Excel Frequency函数统计不同分数段的人数实例

图4

 

2、公式 =FREQUENCY(B2:B28,C2:C6-1) 说明:

A、由于 C2:C6 中都是 60、70,而要统计不及格、60-69 这样分数段的人数,因此要用 C2:C6-1,其实是用 C2:C6 中的每个数值减 1。如果不减 1,可直接在 C2:C6 中填 59、69、79、89、99。

B、D2 中的统计结果 0 是不及格的人数,D3 中的 1 是 60-69 分数段的人数,D4 中的 8 是 70-79 分数段的人数,D5 中的 9 是 80-89 分数段的人数,D6 中的 9 是 90-99 分数段的人数,D7 中的 0 是 100 分的人数。

提示:如果不专门统计 100 分的人数,而是把 100 分归到 90 分以上分数段,可以把 C6 中的 100 改为 101。另外,统计不同年龄段的人数也是一样的方法。

 

(二)Transpose + Frequency + Row 组合实现横向统计实例

1、假如要统计 0 到 7 每个数字出现的频率并把统计结果横向显示。框选 A10:H10,输入等号 =,把公式 TRANSPOSE(FREQUENCY(A1:F7,ROW(1:8)-1)) 复制到 = 后,按 Ctrl + Shift + 回车,则统计出 A1:F7 中 1 到 7 各数字的出现频率;操作过程步骤,如图5所示:

Excel Transpose + Frequency + Row 组合实现横向统计实例

图5

 

2、公式 =TRANSPOSE(FREQUENCY(A1:F7,ROW(1:8)-1)) 说明:

A、ROW(1:8)-1 用于以数组形式返回 0 到 7 的数字,ROW(1:8) 以数组形式返回 1 到 8 的数字,然后再用每个数字减 1,最后返回 0 到 7 的数字。

B、Transpose函数把Frequency函数返回结果由列转为行,如果不用Transpose函数,尽管同时选中 A10:H10,但只能统计出 0 的频率。

 

(三)Max + Frequency + Row 组合统计连续次数最多的实例

1、假如要统计连续增长最多的月份数。双击 C2 单元格,把公式 =MAX(FREQUENCY(ROW(1:12),(B2:B13<>1)*ROW(1:12)))-1 复制到 C2,按回车,返回 4;操作过程步骤,如图6所示:

Excel Max + Frequency + Row 组合统计连续次数最多的实例

图6

 

2、公式 =MAX(FREQUENCY(ROW(1:12),(B2:B13<>1)*ROW(1:12)))-1 说明:

A、ROW(1:12) 以数组形式返回 1 到 12 的数字,即 {1;2;3;4;5;6;7;8;9;10;11;12}。

B、B2:B13 以数组形式返回 B2:B13 中的所有数字,即 {1;1;0;1;1;1;1;0;0;1;1;1};则 B2:B13<>1 变为 {1;1;0;1;1;1;1;0;0;1;1;1}<>1,接着从数组中取出每个元素与 1 比较,如果不等于 1 返回 TRUE,否则返回 FALSE,则最后返回 {FALSE;FALSE;TRUE;FALSE;FALSE;FALSE;FALSE;TRUE;TRUE;FALSE;FALSE;FALSE}。

C、则 (B2:B13<>1)*ROW(1:12) 变为 {FALSE;FALSE;TRUE;FALSE;FALSE;FALSE;FALSE;TRUE;TRUE;FALSE;FALSE;FALSE}*{1;2;3;4;5;6;7;8;9;10;11;12},接着把两个数组中对应的元素相乘(相乘时,TRUE 转为 1、FALSE 转为 0),则最后返回 {0;0;3;0;0;0;0;8;9;0;0;0},这样就求得了 Frequency 的区间,每个区间恰好以 B2:B13 中为 0 的数值为分割点。

D、则公式变为 =MAX(FREQUENCY({1;2;3;4;5;6;7;8;9;10;11;12},{0;0;3;0;0;0;0;8;9;0;0;0}))-1,进一步计算,在第一个数组中统计大于 0 且小于等于 3 的数字个数、大于 3 且小于等于 8 的数字个数,大于 8 且小于等于 9 的数字个数和大于 9 的数字个数,结果为 {0;0;3;0;0;0;0;5;1;0;0;0;3}。

E、则公式变为 =MAX({0;0;3;0;0;0;0;5;1;0;0;0;3})-1,接着用 Max 对数组中的元素求最大值,结果为 5,5-1 等于 4。之所以要减 1,是因为用Frequency函数统计每个区间的数字个数时,包含了 B2:B13 中为 0 的数字,例如统计大于等于 0 且小于 3 的这个区间就包含了 3,而 3 是 B4 中的 0 返回的值。

另外,用 Sum + If + Frequency 组合还可以实现中国式排名,具体请参考《Rank函数怎么用的11个实例,含与Rank.EQ和Rank.AVG的区别、并顺自动排序和排名次及分段排序》一文。