欢迎转发和点一下“在看”,文末留言互动! 置顶公众号或设为星标及时接收更新不迷路 小伙伴们好,今天来和大家分享一道统计题目。这道题目用到了FREQUENCY函数的基本应用,赶紧一起来看看吧! 原题目是这样的: ![]() 根据分数以及分档规则,来算一算每个等级的人数。 这道题目实际上就是用到了FREQUENCY函数的分段计频功能。题目中的分档规则就是分段标准,而成绩排序后生成的数组就是待统计数据。 01 分段计频利器--FREQUENCY函数 ![]() 选中单元格区域F12:F19,输入下列公式,三键确认即可。 =FREQUENCY(RANK($B$2:$B$33,$B$2:$B$33),--MIDB($E$3:$E$9,FINDB("到",$E$3:$E$9)+1,3)) 这个功能是FREQUENCY函数最基本的功能,因此必须要掌握。 RANK($B$2:$B$33,$B$2:$B$33) 对成绩进行排序。由于分档规则是按照排名来制定的,因此首先对成绩排名。这部分得到的是一组自然数序列。 --MIDB($E$3:$E$9,FINDB("到",$E$3:$E$9)+1,3) 那怎么取得分档的计频点呢?利用FINDB函数可以找到汉字“到”的位置后,从下一个位置开始,提取长度为3个字节长度的字符串。 注意,这道题目的成功之处就在于这里使用了MIDB函数和FINDB函数。以等级A为例: FINDB("到",$E$3:$E$9)返回的结果是“5”。因为FINDB函数以字节数为基础来查找。一个汉字等于2个字节,源数据中的标点符号也是中文标点,也是2个字节。因此,汉字“到”位于第5个位置 MIDB($E$3:$E$9,FINDB("到",$E$3:$E$9)+1,3) MIDB函数从第6个字节开始提取。但是第6个字节上也是汉字“到”子,MIDB函数不可能将一个汉字拆散,因此第6个字节返回一个空格“ ”。 提取3个字节长度的字符串,最终返回的结果是“2 ”,即数字2前后各有一个空格。 这部分返回的结果是{" 2 ";" 5 ";" 10";" 19";" 25";" 30";" 32"},你看数字或前、或后都有空格。 --MIDB($E$3:$E$9,FINDB("到",$E$3:$E$9)+1,3) 减负运算后将空格去除,生成数值型数字。结果为{2;5;10;19;25;30;32}。 FREQUENCY(RANK($B$2:$B$33,$B$2:$B$33),--MIDB($E$3:$E$9,FINDB("到",$E$3:$E$9)+1,3)) 最后由FREQUENCY函数来计频,得到每个分档的人数。这部分结果为{2;3;5;9;6;5;2;0}。 FREQUENCY函数的计频结果会比分段区间数量多一个,表示比最大数大的数字的个数。这里没有比最大数32还要大的数字,因此计频0。 |
|