精通Excel数组公式018:FREQUENCY数组函数
excelperfect
FREQUENCY函数非常简单,但非常强大且功能丰富。本文介绍这个函数的基本用法,后续文章你将会看到该函数对困难的问题提供的令人惊叹的解决方案。
FREQUENCY的基本用途是计算有多少个数字属于一组类别,如下图1所示,要求统计单元格区域A5:A17中BMX赛车时间属于单元格区域D5:D10类别的数量。(注意,单元格区域D5:D10中类别不是实际公式中的一部分,这里的展示只是为了演示)
图1:提供一组类别的上限,FREQUENCY函数统计数字
选择单元格区域E5:E10,输入数组公式:
=FREQUENCY(A5:A17,C5:C9)
得到一组数字,代表赛车时间落入到每类中的数量。例如,BMX赛车时间中有5个大于45秒且小于等于50秒。
FREQUENCY函数有两个参数:
参数data_array包含被统计的数据,例如示例中的单元格区域A5:A17。
参数bins_array包含每个分类的上限,例如示例中的单元格区域C5:C9。
注意,FREQUENCY函数返回的结果比参数bins_array的数量多1个。
通过上述示例,我们可以观察到:
1.第1个分类统计小于或等于第一个上限的所有值。
2.中间的分类统计下限和上限之间的值,不包括下限,但包括上限。
3.最后一个分类统计大于最后一个上限的所有值。
FREQUENCY函数是如何工作的
关于FREQUENCY函数,下面是你需要知道的:
1.FREQUENCY函数统计每个分类中有多少个数字。
2.参数bins_array包含分类的上限值——仅数字。
3.参数data_array包含要统计的值——仅数字。
4.下面是关于分类的一些要点:
(1)分类是自动创建的。没有如何组织分类的可视化指示。
(2)第一个分类统计小于等于第一个上限的所有值。
(3)中间的分类统计介于下限和上限之间的值,不包括下限,但包括上限。
(4)最后一个分类统计大于等于最后一个上限的所有值。
(5)总是比bins_array多一个分类。
5.FREQUENCY函数返回一个垂直数组。如果需要水平数组,那么使用TRANSPOSE函数进行转换。
6.因为这是一个数组函数,所以在创建公式前必须选择目标单元格区域,使用Ctrl+Shift+Enter结束公式输入。如果在参数bins_array中有n个值,那么所选择的目标单元格区域应该包含n+1个单元格。
7.FREQUENCY函数忽略空单元格和文本。
8.如果有重复的bins_array,则重复的统计计数0。(用于创建统计唯一值的公式)
9.在使用Ctrl+Shift+Enter的FREQUENCY函数被输入到目标单元格区域后,结果数组值将作为一个整体,不能删除其中的任意单元格。
10.FREQUENCY函数能够作为一个更大的数组公式的一部分,用于传递一个垂直数组。
示例:使用TRANSPOSE转换FREQUENCY的结果
如果需要得到一组水平数组,可以在FREQUENCY函数的公式中添加TRANSPOSE函数,如下图2所示。
图2:TRANSPOSE将FREQUENCY的结果转换成水平数组
示例:FREQUENCY函数处理空单元格、文本和重复值
如下图3所示,FREQUENCY函数忽略空单元格和文本。
图3:FREQUENCY函数忽略空单元格和文本
如下图4所示,重复的bins_array参数值将统计为0,这对于统计或提取不重复值的公式来说非常有用。
图4:在参数bins_array中的重复值统计为0
示例:统计下限与上限之间数值的个数——FREQUENCY,COUNTIF或COUNTIFS
当想要统计上限与下限之间的数值个数,需要考虑如何构造分类并且是否包括上限和下限值。如下图5所示,使用FREQUENCY函数比使用COUNTIF或COUNTIFS函数更容易。
图5:COUNTIF和COUNTIFS比FREQUENCY构造的公式更复杂
然而,在上限值和下限值之间进行计数的间隔类型很多。如下图6所示,要统计包括下限但不包括上限的数值数量,此时,不能使用FREQUENCY,而只能使用COUNITF或COUNTIFS函数。
图6:COUNTIF和COUNTIFS函数能够处理更多的不同值范围计数情形
注:本文为电子书《精通Excel数组公式(学习笔记版)》中的一部分内容节选。你可以到知识星球App的完美Excel社群下载这本电子书的完整中文版。
欢迎到知识星球:完美Excel社群,进行技术交流和提问,获取更多电子资料。