如何在Excel中计算两班倒员工的每日实际工作总工时?
Excel两班制员工每日总工时计算方法
核心计算规则
- 无论白班或晚班员工,单日总工时=当日末次登出时间 - 当日首次登录时间
- 若当日存在多条登录/登出记录,仅取该员工当日的第一条登录时间、最后一条登出时间进行计算
公式实现(Excel 2019及以上版本)
假设数据结构:
- A列:员工卡号
- B列:记录时间(带日期的完整时间)
- C列:记录类型(登录/登出)
- D列:提取的日期(可通过公式
=INT(B2)生成)
单个员工单日计算
- 提取指定员工指定日期的首次登录时间:
=MINIFS(B:B, A:A, "V2605", D:D, DATE(2023,2,1), C:C, "登录")
- 提取指定员工指定日期的末次登出时间:
=MAXIFS(B:B, A:A, "V2605", D:D, DATE(2023,2,1), C:C, "登出")
- 计算总工时:
=MAXIFS(B:B, A:A, "V2605", D:D, DATE(2023,2,1), C:C, "登出") - MINIFS(B:B, A:A, "V2605", D:D, DATE(2023,2,1), C:C, "登录")
批量计算所有员工每日工时
在E2单元格输入以下公式,下拉填充即可批量计算每行对应员工当日的总工时:
=MAXIFS(B:B, A:A, A2, D:D, D2, C:C, "登出") - MINIFS(B:B, A:A, A2, D:D, D2, C:C, "登录")
兼容旧版Excel的数组公式(Excel 2016及以下版本)
若无法使用MAXIFS/MINIFS函数,可使用数组公式实现:
- 首次登录时间(输入后按
Ctrl+Shift+Enter确认):
=MIN(IF((A:A="V2605")*(D:D=DATE(2023,2,1))*(C:C="登录"), B:B))
- 末次登出时间(输入后按
Ctrl+Shift+Enter确认):
=MAX(IF((A:A="V2605")*(D:D=DATE(2023,2,1))*(C:C="登出"), B:B))
- 总工时为上述两个公式结果相减,同样需按数组公式确认规则输入。
内容的提问来源于stack exchange,提问作者Limit Legend
相关产品推荐
相关产品推荐

