数据分段统计神器! Excel中的隐藏宝藏函数FREQUENCY很强大


    今天跟大家分享的是Excel中的隐藏宝藏函数FREQUENCY,简直就是数据分段统计神器!只需几步,轻轻松松搞定数据分组,效率提升不是一星半点,同事都惊呆了!
    FREQUENCY函数介绍:
    
  • 功能:FREQUENCY函数主要是计算值在某个范围内出现的频率, 然后返回一个垂直的数字数组。
  • 语法:FREQUENCY(一组数值,一组间隔值)

    Frequency函数的作用与参数
    Frequency函数:计算数字出现的频率,然后以一列垂直数组返回结果。
    
    语法:=FREQUENCY(data_array, bins_array)
    第一参数:data_array,需要计算频率的数据区域第二参数:bins_array,计算频率的间隔点以上就是这个函数的作用与参数,相信很多粉丝看到这里都是云里雾里的,不要担心,我通过一个例子,来具体分析下这个函数
    应用场景 场景一:统计学员各年龄段人数
    如下图所示,左侧是学员信息表,要统计这些学员在各年龄段人数,分三个年龄段来统计人数“18-26”、“27-35”、“36以上”,这三个年龄段的分界点是26和35。
    
    只需在目标单元格中输入公式:
    =FREQUENCY(B2:B8,F2:F3)
    然后点击回车即可
    
    解读:
    
    FREQUENCY函数的第1参数是B2:B8单元格区域是学员年龄数据;第2参数是F2:F3单元格区域是年龄段的分界点26和35,函数会统计年龄数据中小于等于当前分界点,同时大于上一分界点的数量。
    当然如果想统计男性学员在每个年龄段的人数,只需修改公式为:
    =FREQUENCY(IF(C2:C8="男",B2:B8,""),F2:F3)
    上面公式利用IF函数想判断是否为男性,如果成立返回对应的年龄,否则返回空值。
    
    场景二:统计连续到岗最多天数
    如下图所示,表格中是员工10.1假期加班情况,需要统计每个员工连续加班到岗最大天数。
    
    只需在目标单元格中输入公式:
    =MAX(FREQUENCY(IF(B2:I2="√",COLUMN(B:I)),IF(B2:I2<>"√",COLUMN(B:I))))
    然后点击回车即可
    
    
    解读:
    
  • ①IF(B2:I2="√",COLUMN(B:I))部分使用IF函数判断B2:I2单元格区域中是否是"√",如果是说明加班到岗,公式返回相应单元格的列号,否则返回逻辑值FALSE。
  • 结果返回一个内存数组:{2,3,4,FALSE,FALSE,7,FALSE,FALSE}
  • ②IF(B2:I2<>"√",COLUMN(B:I))部分的计算规则与上一个IF函数相反,在B2:I2单元格区域中不是"√"(没有加班))时返回对应的列号,否则(加班到岗)返回逻辑值FALSE。
  • 结果返回一个内存数组:{FALSE,FALSE,FALSE,5,6,FALSE,8,9}
  • ③然后借助FREQUENCY函数忽略参数中逻辑值的特点,以不加班对应的列号{5,6,8,9}为分组间隔值,统计加班到岗对应的列号{2,3,4,7}在各个分组中的数量,相当于分别统计在两个不加班列号之间有多少个加班的列号。
  • 结果返回一个垂直内存数组:{3;0;1;0;0}
  • ④最后使用MAX函数从中提取出最大值,就是连续加班到岗最大天数。

    通用公式:
    当然,如果觉得上面公式计算逻辑过程不容易理解,可以记住按条件统计频率个数的通用公式,到时直接套用即可:
    =FREQUENCY(IF(符合条件,相应列号),IF(不符合条件,相应列号))
    实例分析 案例1:满足条件的个数
    我们可以使用COUNTIF来处理,也可以使用FREQUENCY!
    
    案例2:去重计数
    这里主要利用我们前面说过的一个点,FREQUENCY只会在第一次出现的间隔值上统计次数,第二次0,0/0会报错,我们统计一下最后有几个数值就是想要的结果
    
    我们拆解看一下过程,方便大家理解!
    第一次出现19,计数是2,第二次出现是0,最后一个大于20,没有对应的内容,结果是0,这样用0除以这组数,就可以得到不报错的个数或者或还是数值的个数就是不重复个数!
    
    案例3:
    如下图所示,我们想要根据【考核得分】来计算下每个区间的人数,如果使用FREQUENCY函数的话,是需要设置一个【分割点】的辅助表的,表格设置之后,直接设置函数即可
    公式:=FREQUENCY(B2:B17,H2:H4)
    
    跟大家简单的讲解下这函数,公式为:
    =FREQUENCY(B2:B17,H2:H4)
    
  • 第一参数:B2:B17,就是需要统计数据的区域
  • 第二参数:H2:H4,就是构建的分割点表格

    FREQUENCY函数会根据分割点来统计每个区间的数字个数,在这里可能很多人会疑问:为什么四个区域仅仅需要3个分割点呢?
    在这里我们可以将数据看作是一条直线,想要将它划分为四段。将一条直线划分为四段,我们仅仅需要设置3个分割点就能做到了,这个也就是为什么分割点只有3个原因,效果如下图所示。
    
    还有一点需要注意的是FREQUENCY进行区间统计,分割点会是包含在对应区间的,比如在这里第一个分割点是60,这个60会计算在第一个区间就是考核得分≤60这个区间,而不会将60计算在【60-80】这个区间,以上就是FREQUENCY函数的计算规则,理解起来可能还是有一定难度的,下面我们来看下他都能解决哪些问题
    实先声明下,如果你的基础不好,看到这里就可以了,下面能看懂的估计也已经是Excel大神了
    案例4:统计指定数字的个数
    如下图,我们想要统计下【60-80】区间的数值个数,只需要将函数设置为:
    =INDEX(FREQUENCY(B2:B17,{60,80}),2)
    在这里{60,80}就表示分割点,FREQUENCY函数会得到3个结果,我们利用index函数将第二个结果取出来,它就是我们需要的结果
    
    案例5:计算最大连续次数
    如下图所示,我们想要计算下班级的最大连续次数,就是计算下图黄色区域3班的个数,公式为:
    =MAX(FREQUENCY(ROW(2:17),IF(B2:B17<>B3:B18,ROW(2:17))))
    这个计算过程还是比较复杂的主要是利用了IF函数来判断出相同的数据,然后再利用FREQUENCY获取相同数据的个数,最后使用max函数取出最大值
    
    案例6:查找最近接的值
    如下图所示,我们想要在表格中查找最接近56的数字是多少,只需要将函数设置为:
    =LOOKUP(1,0/FREQUENCY(0,ABS(C2:C11-F2)),C2:C11)
    在FREQUENCY函数中第一参数是0,ABS(C2:C11-F2)求【考核得分】这一列与56的绝对值,将这个绝对值作为分割点,这样的话只有第一个分割点是有数据的,其余的都是没有的。
    
    注意事项
    1.因为FREQUENCY函数的结果是一个数组公式,我们需要先选择数据区域,然后输入公式,按下Ctrl+Shift+回车来三键填充公式,需要注意的是选择的数据区域要比第二参数分割点多一个单元格,如下动图所示
    
    2. FREQUENCY会自动的文本与空白单元额忽略掉,并且在进行数据统计的数据,会自动的根据第二参数的【分割点】来对第一参数【统计区域】进行升序排序。