每天清晨六点,准时与您相约
问题情境
昨天韩老师讲了Excel372 | 根据打卡时间计算员工有没有迟到并计算迟到人数,今天有位朋友提出问题:
韩老师:公式不对!为什么8点之前打卡,也是迟到?
韩老师查看他传过来的数据表,时间的格式是这样的!如下表:
表面上看起来是仅仅是时间,但真实数字是日期+时间,只不过通过单元格格式设置为只显示时间。
韩老师原来讲过:
日期在EXCEL里是整数,是距1900年1月1日的天数;
时间是小数,24小时是一天,所以24点是1,其他时间都是小数。
在这个表中打卡时间是日期+时间,就不能直接和1/3(8点)比较,因为日期+时间肯定都大于1/3,直接套用韩老师昨天那篇文章中的公式就会出错。
公式实现
一、统计是否迟到
在C2单元格输入公式:
=IF(--TEXT(B2,"hh:mm:ss")>1/3,"迟到","")
并往下填充,即可计算出每位员工是否迟到。
如下图:
TEXT(B2,"hh:mm:ss"):
将日期+时间的单元格值,通过TEXT函数只保留时间,精确到秒。TEXT是文本函数,得到的时间是文本格式。
--TEXT(B2,"hh:mm:ss"):
通过减负运算,将文本格式的时间转换为数值格式。
IF(--TEXT(B2,"hh:mm:ss")>1/3,"迟到",""):
将数值格式的时间与1/3(8点)比较,如果大于1/3,即是晚于8点,为迟到,否则返回空值。
在B17单元格输入公式:
=SUMPRODUCT(N(--TEXT(B2:B16,"HH:MM:SS")>1/3))
如下图:
本公式中的TEXT与减负(--)运算参考上一部分是否迟到公式的解释;SUMPRODUCT的用法参考昨天的文章。