深入理解FREQUENCY函数
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公式与函数之美30:FREQUENCY函数的精彩应用
Excel公式技巧87:使用FREQUENCY()求非连续区域上的条件平均值
Excel公式技巧88:使用FREQUENCY函数统计不同值、唯一值和连续值(上)
Excel公式技巧89:使用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函数的结果数组也只是元素排列的顺序不同。
相关文章
- mysql字符串函数大全(更新完成)
- 深入理解Linux中的函数替换(linux函数替换)
- 函数深入理解Linux atoi函数(linuxatoi)
- 函数深入理解Linux atoi函数(linuxatoi)
- 函数深入理解Linux下atoi函数(linuxatoi)
- 函数深入理解Linux atoi函数(linuxatoi)
- 函数深入理解Linux系统的atoi函数(linuxatoi)
- 深入了解Linux内存分配函数,优化系统性能(linux内存分配函数)
- 深入解析MySQL中的AVG函数:让数据统计更准确(mysql中的avg)
- 深入理解Linux中的bind函数(bind函数linux)
- 深入探索Oracle POS函数的强大能力(oracle pos函数)
- javascripteval函数深入认识
- 深入理解JavaScript系列(15)函数(Functions)
- JavaScript中valueOf函数与toString方法深入理解
- ORACLE时间函数(SYSDATE)深入理解
- 基于C语言sprintf函数的深入理解
- 深入mysqlYEAR()MONTH()DAYOFMONTH()日期函数的详解
- C语言typedef与复杂函数声明问题的深入解析
- 深入解析C++中的虚函数与多态