zl程序教程

您现在的位置是:首页 >  其它

当前栏目

深入理解FREQUENCY函数

函数 深入 理解
2023-06-13 09:17:15 时间

FREQUENCY函数比较难以理解,但却非常有用,在一些公式解决方案中使用FREQUENCY函数能够达到意想不到的效果,因此深入理解FREQUENCY函数有助于我们在公式中灵活运用。

FREQUENCY函数统计数值在某范围内出现的频率,并返回一个垂直的数字数组。FREQUENCY函数有2个参数,其语法如下:

  • FREQUENCY(data_array,bins_array)
    • data_array: 代表用来计算频率的数组,或者单元格区域。
    • bins_array: 由每个区间上限数字组成的数组或者单元格区域。
    • 返回的值为一个数组,代表每个区间的数值个数且该数组包含的元素数总比参数bins_array中的个数多1,多出的这个数字是Excel自动创建的最后一个区间中的数值个数。
    • 返回的数组为垂直数组,可以使用TRANSPOSE函数将其转换成水平数组。
    • 该函数忽略空单元格和文本。
    • 如果参数bins_array中有重复的值,那么重复的值统计的数为0。

本文不会讲解FREQUENCY函数的使用,详细的应用示例可以参见下列文章:

Excel函数学习38:FREQUENCY函数

Excel公式与函数之美30:FREQUENCY函数的精彩应用

Excel公式技巧87:使用FREQUENCY()求非连续区域上的条件平均值

Excel公式技巧88:使用FREQUENCY函数统计不同值、唯一值和连续值(上)

Excel公式技巧89:使用FREQUENCY函数统计不同值、唯一值和连续值(下)

Excel公式技巧99:FREQUENCY函数应用示例

本文主要探讨FREQUENCY函数的一些非常规的行为,以加深对其的理解。

如下图1所示,公式:

=FREQUENCY(A1:A12,B1:B12)

返回数组:

{12;0;0;0;0;0;0;0;0;0;0;0;0}

图1

也就是说:

=FREQUENCY({0;0;0;0;0;0;0;0;0;0;0;0},{1;2;3;4;5;6;7;8;9;10;11;12})

={12;0;0;0;0;0;0;0;0;0;0;0;0}

如果我们将列B中的数值顺序变一下,其结果会发生改变,如下图2所示。

图2

此时,

=FREQUENCY({0;0;0;0;0;0;0;0;0;0;0;0},{12;11;10;9;8;7;6;5;4;3;2;1})

={0;0;0;0;0;0;0;0;0;0;0;12;0}

这次,我们改变列B中的数值,其结果如下图3所示。

图3

即:

=FREQUENCY({0;0;0;0;0;0;0;0;0;0;0;0},{12;11;10;9;8;7;6;7;8;9;10;11})

={0;0;0;0;0;0;12;0;0;0;0;0;0}

可以看出,FREQUENCY函数的结果数组元素顺序与参数bins_array中数值的顺序有关

再举一个例子,这是在《根据条件获取唯一的第n个值》中使用FREQUENCY函数时得到的中间数据,如下图4所示。

图4

公式:

=FREQUENCY(G1:G12,H1:H12)

先求出大于11287且小于等于662100的数出现的个数,结果为1。

再求大于9439且小于等于11287的数出现的个数,结果为4。

接着求大于3090且小于等于9439的数出现的个数,结果为1。

再求小于等于3090的数出现的个数,结果为2。

对于参数bins_array中重复的数其结果为0。

验证一下,我们将列H中的数改变顺序,结果如下图5所示。

图5

确实如此!

因此,对于相同的元素,如果只是参数bins_array中元素的顺序不同,那么FREQUENCY函数的结果数组也只是元素排列的顺序不同。