原文标题:《千万别学Frequency函数,一学你就停不下来……》
大家好,我是小爽~
前面的文章我们介绍过Frequency函数的基础语法,里面利用了数据轴的方式进行解析~
Frequency函数的基础语法:
=FREQUENCY(Data_array,Bins_array)
=FREQUENCY(统计的区域,分段点)
在我百般追着赵老师继续写Frequency函数的延伸做法的「高压」之下,今天他终于「熬」出来了!!
所以现在我们来学习一下Frequency函数的延伸应用之一——最大连胜场数。
什么意思呢?我们来看几个实际生活工作中的案例。
一群学生在排队,连续排在一起的相同性别的学生,最多不能超过N个人,不然就要重新调整位置;
在考核中,如果员工连续出现N次客户投诉,就需要对该员工进行警告;
在比赛场上,有时候需要看最大连胜场数,用来判断成员的发挥情况。
……
这不,最近我跟赵老师来了一个比赛——丢硬币!!
(总共十场,丢到字面我赢,丢到花面赵老师赢。)
我对自己的胜负结果,用Excel做了一下记录,结果如下:
现在我们需要计算出最大连胜场数是多少。
如果是你,你会怎么做?
思考中……
思考中……
思考中……
从表中,我们观察到:各个连续的胜,被「败」分隔成了一块一块的。
其实就是以「败」出现的位置作为分段点,计算各点之间有多少个「胜」的问题。
Frequency,是一个可以忽略逻辑值和文本,只针对数值进行分段统计的函数。
因此,我们需要按照场次顺序,编一组有序数值,如G列;
再将胜与败的序号分两列展示,如I列和J列;
在I3单元格输入公式,下拉填充:
=IF(C3="胜",G3)
在J3单元格输入公式,下拉填充:
=IF(C3="败",G3)
通过观察,我们可以发现,要想计算出每一段胜的连续个数,我们只需要统计:
2之前有几个数,4~9之间有几个数,9之后有几个数。
这样我们就进入了Frequency函数,对数值进行分段统计个数的模式:
以「胜」对应的序号作为统计的数据点,「败」的序号作为分段点,Frequency函数就可以帮我们数个数啦!
=FREQUENCY(胜的序值,败的序值)
公式返回的一组数值就是各自区间连胜的场数,其中的最大值便是最大连胜场数。
按照前面的思路拆解,现在我们就来看看用Frequency函数,怎么解决这个最大连胜次数的问题。
在E3单元格输入公式:
=MAX(FREQUENCY(IF(C3:C12="胜",ROW(1:10)),IF(C3:C12="败",ROW(1:10))))
按[CTRL+SHIFT+ENTER]进行数组运算,得到结果如下图:
一顿操作猛如虎,且看我下方慢慢解析~
公式如下:
=MAX(FREQUENCY(IF(C3:C12="胜",ROW(1:10)),IF(C3:C12="败",ROW(1:10))))
其中:
IF(C3:C12="胜",ROW(1:10))
——表示返回胜对应的行序,作为统计区域;
IF(C3:C12="败",ROW(1:10))
——表示返回败对应的行序,作为分段点值;
接下来就是用Frequency函数求出各区间数值的个数,结果返回数组{1;0;0;4;1},也就是是各个连胜区间对应的个数。
最后再用MAX函数求出最大值,就是最大连胜场数了。
小小拓展一下,公式还可以简化为:
=MAX(FREQUENCY(ROW(1:11),IF(C3:C12<>"胜",ROW(1:10))))-1
为什么可以这么简化呢?
其实这个公式的原理,跟前面的思路是差不多的。
具体思路的拆解,就留给大家后面自己思考了。
本文介绍了Frequency函数在最大连胜场数的应用:
❶Frequency函数的语法规则:=Frequency(统计的区域,分段点)。
❷最大连胜场数的思路解析:当我们遇到类似关于统计连续出现最大次数的问题,可以构造一组有序数值,进入Frequency函数模式来解决。
❸公式原理:分段点就是败的序号,统计区域是胜的序号。
说好的Frequency函数基础语法相关文章,戳这里:
这个函数比COUNTIF好用,助你高效工作
如果你工作中经常用到Excel,偶尔还会为Excel熬夜加班,看教程觉得自己都会了,实操起来还是两眼一抹黑……
这个时候就需要系统地学习Excel啦!