欢迎转发和点一下“在看”,文末留言互动!
置顶公众号或设为星标及时接收更新不迷路
小伙伴们好,今天来和大家分享一道基础题目。在今天的推文中会介绍两个常用的方法和技巧,熟练掌握,今后便能够熟练处理同类的问题。
题目是这样的:
上面是某工厂工人一个月的打卡记录。没有记录的则为缺勤。现在我们要统计员工连续上班超过6天的总天数。
例如张三1号缺勤,2号开始上班到13号,超过连续6天天数为12-6=6天,14号缺勤,从15号重新开始计算,15号到31号超过连续6天天数为17-6=11天,本月总超过连续6天天数为6+11=17天
这个问题可以使用FREQUENCY函数或者COUNTIF函数来解决。
FREQUENCY函数是解决这类问题最常用的函数。
是把有考勤记录的日期提取出来,没有考勤记录的则返回空值。
则相反是把没有考勤记录的日期提取出来,有考勤的则返回空值。
上面这两个处理是一种常用手段,它们分别作为FREQUENCY函数的第1、2 参数,返回的则是连续上班的天数。它们常常和FREQUENCY函数固定搭配使用。
FREQUENCY(IF(C2:AG2,C$1:AG$1,""),IF(C2:AG2,"",C$1:AG$1))
FREQUENCY函数返回的结果是{0;12;17}。它的含义是,有2段连续上班的时间,一段是12天,另一段时17天。
FREQUENCY(IF(C2:AG2,C$1:AG$1,""),IF(C2:AG2,"",C$1:AG$1))-6
题目要求是大于6天的连续上班天数,因此要减去6,结果是{-6;6;11}
=SUM(--TEXT(FREQUENCY(IF(C2:AG2,C$1:AG$1,""),IF(C2:AG2,"",C$1:AG$1))-6,"[<]!0"))
利用TEXT函数强制将负数转换为0,减负运算后再用SUM函数求和即可。
OFFSET(B2,,COLUMN(A:Y),,7)
以单元格B2为基点向右偏移。偏移后的单元格区域是1行7列。
COUNTIF(OFFSET(B2,,COLUMN(A:Y),,7),">0")
COUNTIF函数来统计每个偏移后的单元格区域中数值大于0的个数。这个部分返回的结果是{6,7,7,7,7,7,7,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7}。
COUNTIF(OFFSET(B2,,COLUMN(A:Y),,7),">0")=7
由于题目是要求大于连续6天上班的天数,于是这道题目就转变为统计有多少个结果为“7”,就有多少天超过6天的加班数。
N(COUNTIF(OFFSET(B2,,COLUMN(A:Y),,7),">0")=7)
逻辑判断后利用N函数将TRUE转换为1,FALSE转换为0。
=SUMPRODUCT(N(COUNTIF(OFFSET(B2,,COLUMN(A:Y),,7),">0")=7))
SUMPRODUCT函数求和。
本期内容练习文件提取方式:
链接:https://pan.baidu.com/s/1XccWK3sSGcYWTOv_6ZGubQ?pwd=zo49
提取码:zo49
好了朋友们,今天和大家分享的内容就是这些了!喜欢我的文章请分享、转发、点赞和收藏吧!如有任何问题可以随时私信我哦!