4.2 频率函数
公式:=FREQUENCY(data_array,bins_array)
要注意的知识点
第1点:FREQUENCY函数总共有两个参数,第1参数为一组垂直数组;第2参数为要求出现频率的元素。其中第1参数和第2参数都可以是引用的单元格或数组。
第2点:在第1参数中统计小于或等于第2参数的分隔点且还要大于前一个分隔的个数。
第3点:第1参数和第2参数只支持数值型数据,不支持文本和文本型数据。
第4点:第1参数和第2参数只支持布尔值(TRUE或FALSE)、空单元格参与计算。
第5点:统计出来的结果会比第2参数中元素的分隔点多一个,多出来的就是统计大于第2参数最大值的个数。
第6点:第2参数不参与排序,但是在运算时它是按升序进行统计的。
第7点:显示的结果还是按第2参数进行显示。
第8点:如果第2参数中有用于分隔重复元素的分隔点出现,则只显示第1个分隔点,重复出现的分隔点显示0。
案例227 使用FREQUENCY函数统计分数出现的频率
案例及公式如下图所示。这里将A列中的分数分成4个等级(见B列),统计每个等级中分数出现的频率。
公式
=FREQUENCY(A2:A11,{59.9;69.9;79.9})
公式解释
在此公式中,第2参数中有3个元素:{59.9;69.9;79.9}。在A2:A11单元格区域中,大于0且小于或等于59.9的值有1个;大于59.9且小于或等于69.9的值有两个;大于69.9且小于或等于79.9的值有3个;大于79.9的值有4个。
案例228 使用FREQUENCY函数统计不重复值的个数
案例及公式如下图所示。这里要统计A列中不重复值的个数。
公式
=COUNT(0/FREQUENCY(MATCH(A1:A5,A1:A5,0),MATCH(A1:A5,A1:A5,0)))
公式解释
在此公式中,由于FREQUENCY函数的第1参数和第2参数只支持数值型数据,不支持文本和文本型数据,所以这里用MATCH函数进行数值转换。MATCH函数有一个特点:如果数值重复出现,则只显示第1次出现的位置。而在FREQUENCY函数的第2参数里,如果数值重复出现,则只显示第1次出现的频率,再次出现的计为0,这样用0除以0会报错,0除以其他数值结果为0,最后用COUNT函数统计数值型数字的个数,也就是0的个数,从而得到了唯一值的个数。
FREQUENCY(MATCH(A1:A5,A1:A5,0),MATCH(A1:A5,A1:A5,0)):返回{2;2;0;0;1;0}。
MATCH(A1:A5,A1:A5,0):返回{1;2;1;2;5},也就是小于或等于1的个数是2;大于1且小于或等于2的个数也是2,而{1;2;1;2;5}中的第3个值和第4个值重复,显示为0,因此大于2且小于或等于5的个数是1,最后还要多出一个结果:大于5的个数为0,最后返回结果为{2;2;0;0;1;0}。
案例229 使用FREQUENCY函数实现去重
案例及公式如下图所示。这里要对A列中的姓名进行去重。
公式
=LOOKUP(1,0/FREQUENCY(0,COUNTIF($B$1:B1,$A$1:A6)),$A$1:A6)&""
公式解释
在此公式中,FREQUENCY函数的第2参数为COUNTIF($B$1:B1,$A$1:A6),其中B1单元格中是“结果”两个字,在A1:A6单元格区域中没有“结果”,所以返回6个0,即{0;0;0;0;0;0}。而FREQUENCY函数的第1参数是0,小于或等于0的个数为1个,后面又重复统计小于或等于0的个数5次,根据FREQUENCY函数的特点,如果重复统计则全部显示为0。0/FREQUENCY得到一个0,而得到这个0的位置就是我们定位LOOKUP函数的第3参数要返回的位置。为什么后面还要连接空格""?这是为了屏蔽引用空单元格时显示的0。
案例230 合并单元格条件求和
案例及公式如下图所示。这里要统计每个人对应的数量之和。
公式
=SUM(OFFSET(B1,MATCH(E2:E4,A1:A12,)-1,0,FREQUENCY(-ROW(A1:A12),IF(A1:A12<>"",-ROW(A1:A12))),1))
公式解释
MATCH(E2:E4,A1:A12,)-1:找到每一个姓名的起始单元格,作为OFFSET函数的第2参数,即偏移的行。
FREQUENCY(-ROW(A1:A12),IF(A1:A12<>"",-ROW(A1:A12))):把每一个姓名所需要合并单元格的个数统计出来,其中-ROW(A1:A12)返回{-1;-2;-3;-4;-5;-6;-7;-8;-9;-10;-11;-12},而IF(A1:A12<>"", -ROW(A1:A12)) 返回{-1;FALSE;FALSE;-4;FALSE;FALSE;FALSE;FALSE;-9; FALSE;FALSE;FALSE}。根据FREQUENCY函数的特点:第1参数和第2参数只支持数值型数据,不支持文本和文本型数据,因此FREQUENCY(-ROW(A1:A12),IF(A1:A12<>"",-ROW (A1:A12)))返回{3;5;4;0}。
另外要注意,在F2单元格中输好公式之后,选中单元格区域F2:F4,再将鼠标光标定位到编辑栏中,然后按快捷键Ctrl+Shift+Enter结束。