37度3
回答者
回答于 2026-11-08
在Excel中结合打卡记录统计每月出勤与加班天数,核心是通过条件计数函数匹配姓名、日期及时间数据。
一、统计每月实际出勤天数
假设A列为姓名,B列为打卡日期,需统计某员工在指定月份的出勤天数:
- 使用COUNTIFS函数:
=COUNTIFS(A:A,"张三",B:B,">="&DATE(2024,1,1),B:B,"<"&DATE(2024,2,1))。该公式统计“张三”在2024年1月内的打卡记录数。若每天仅一条有效打卡记录,结果即为出勤天数。 - 去重处理:若一天有多次打卡(如上下班各一次),直接计数会重复。可使用
SUMPRODUCT配合数组去重,或先通过辅助列用TEXT(B2,"yyyy-mm-dd")&A2生成唯一标识,再用COUNTIF统计不重复项。
二、统计每月加班天数
加班通常分为工作日延时加班和休息日/节假日加班,需根据打卡时间判断:
- 工作日延时加班:假设C列为下班打卡时间,标准下班时间为18:00。公式示例:
=COUNTIFS(A:A,"张三",B:B,">="&起始日期,B:B,"<"&结束日期,C:C,">"&TIME(18,0,0))。此公式统计下班打卡晚于18:00的天数。 - 休息日加班:利用
WEEKDAY函数判断日期是否为周末。公式示例:=SUMPRODUCT((A$2:A$1000="张三")*(B$2:B$1000>=起始日期)*(B$2:B$1000<结束日期)*(OR(WEEKDAY(B$2:B$1000,2)=6,WEEKDAY(B$2:B$1000,2)=7)))。注意SUMPRODUCT内处理OR逻辑时需转换为加法运算(WEEKDAY(...)=6)+(WEEKDAY(...)=7)>0。
三、适用条件与常见误区
- 数据规范:打卡日期必须为Excel标准日期格式,时间必须为标准时间格式,文本型日期会导致条件匹配失败。
- 跨天打卡:若存在夜班跨零点打卡,单纯比较时间大小会产生误判,需结合具体排班表增加逻辑判断。
- 多条件嵌套:当规则复杂时(如需同时满足迟到不计入出勤、加班需满1小时才算等),建议增加辅助列将中间判断结果固化,再对辅助列进行汇总,以降低单条公式的复杂度与出错率。