怎么制作动态考勤表?手把手教你用Excel实现自动化统计

最近有好几个同事来问我,说每个月做考勤统计特别麻烦,手动算迟到、请假容易出错,问我有没有什么好办法。其实我以前也经历过这个阶段,后来花时间研究了下,用Excel做了个动态考勤表,虽然一开始设置有点费劲,但用起来确实方便多了。今天就把我自己摸索的方法分享出来,如果你也在头疼考勤统计,可以参考看看。

一、先想清楚你的考勤表需要哪些功能

在动手之前,最好先规划一下。一个基本的动态考勤表,通常需要这几个功能:日期能根据年份月份自动变化;能标记不同的考勤状态(比如出勤、迟到、请假);能自动统计各种状态的次数;最好还能方便地查看某个人的全月考勤情况。想清楚这些,后面做的时候就不会手忙脚乱了。

二、搭建基础表格框架

打开一个新的Excel表格,我习惯在第一行留出标题,比如“XX公司员工考勤表”。第二行可以设置年份和月份的选择单元格。这里有个小技巧:在某个空白区域,比如表格最右边或最下面,先列出1到12月,然后通过“数据验证”功能,让月份选择单元格只能从这个列表里选,这样既规范又不容易输错。

接下来,从第四行或者第五行开始,建立表头。第一列放“序号”,第二列放“姓名”,第三列开始就是日期了。日期是动态考勤表的核心,需要让它能根据我们前面选择的年份和月份自动生成。

三、让日期自动动起来

这里要用到几个函数。假设我们在B2单元格选择年份,C2单元格选择月份。那么第一个日期单元格(比如C4)的公式可以这样写:
=DATE($B$2,$C$2,1)
这个DATE函数的作用是根据指定的年、月、日生成一个日期。这里我们固定了年和月(用$符号锁定单元格),日期从1号开始。

第二个日期单元格(D4)的公式就是:
=C4+1
然后把这个公式向右填充,直到这个月的最后一天。怎么知道最后一天呢?可以用EOMONTH函数来判断。比如在表格后面找个单元格写:
=EOMONTH(C4,0)
这个函数能返回C4日期所在月份的最后一天。当右边填充的日期超过这个最后一天时,我们可以用IF函数让单元格显示为空,这样表格就只显示当月的日期了。

为了让表格更好看,还可以用WEEKDAY函数,在日期下面一行显示对应的星期几。这样一眼就能看出哪天是周末。

四、设置考勤状态标记

日期下面就是每个员工的考勤记录行了。怎么标记状态呢?我常用的方法是“数据验证”配合下拉列表。选中某个员工日期下方的所有单元格,在“数据”选项卡里找到“数据验证”,允许“序列”,来源那里输入“出勤,迟到,早退,事假,病假,年假,旷工”(根据你们公司的实际情况来定),用英文逗号隔开。这样设置后,点击单元格就会出现下拉箭头,选择状态就行,既快又不会写错别字。

如果想更直观,还可以用“条件格式”给不同状态标上颜色。比如“请假”用浅黄色,“迟到”用浅红色。选中考勤区域,在“开始”选项卡里点“条件格式”-“新建规则”,选择“只为包含以下内容的单元格设置格式”,然后设置“单元格值”等于“事假”,再点“格式”选个填充色。其他状态也一样设置。这样整个考勤表看起来就一目了然了。

五、实现自动统计

表格最右边可以增加几列统计栏,比如“出勤天数”、“请假天数”、“迟到次数”等。统计用COUNTIF函数就很方便。假设员工“张三”的考勤记录在C10到AG10这一行,那么他“出勤天数”的公式可以写:
=COUNTIF(C10:AG10,"出勤")
这个函数会统计这个区域里“出勤”这两个字出现了多少次。其他状态的统计同理。

如果想统计全公司的总数据,可以在表格最下面加个汇总行,用SUM函数把每个人的数据加起来。

六、保护和优化表格

表格做好后,为了防止不小心改到公式或者表头,可以设置保护。把需要每月手动填写的考勤状态单元格锁定,然后对整个工作表设置保护(“审阅”选项卡里的“保护工作表”)。这样公式和结构就不会被破坏了。

另外,可以冻结窗格。选中姓名列后面的第一个日期单元格,点“视图”-“冻结窗格”-“冻结窗格”。这样左右滚动看日期时,姓名列始终固定在最左边,不会对不上人。

七、补充方案:其他工具的选择

上面说的都是用Excel自己从头做,适合喜欢折腾、对数据控制要求高的人。但说实话,每个月维护起来,尤其是员工多的时候,还是要点时间的。函数公式万一不小心被改了,排查起来也挺头疼。

后来因为工作变动,我需要同时管几个临时项目的考勤,人员流动大,用Excel表格来回发有点乱。我就尝试找了一些在线的工具。我用的那个工具,它最大的优点是不用安装软件,在网页上就能操作,手机也能简单查看。它把考勤表模板都做好了,我只需要导入人员名单,设置一下考勤规则(比如上下班时间、假期类型),然后分享链接给成员,他们自己就能标记状态。月底它能自动生成一个统计报告,比我手动加要快不少,也减少了计算错误。

但这个工具也有明显的限制。首先,它的自定义程度不如Excel。比如我想加一个我们公司特有的补贴计算规则,它就实现不了,只能按照它内置的几种逻辑来。其次,它对网络的依赖性很强,万一遇到网络不好或者服务器出问题(虽然我遇到次数很少),当时就没办法记录或查看。最后,如果团队特别大或者需要非常复杂的排班,它的高级功能是需要付费的,对于小团队或者固定班制的公司,基础功能可能就够用了。

所以,到底是用Excel还是用现成的工具,得看你的具体情况。如果公司制度固定,人员稳定,自己用Excel做一个,一次辛苦,后面用着也放心。如果情况经常变,又不想在表格维护上花太多时间,找个合适的在线工具分担一下工作量也是个办法。我自己现在是两者结合,长期固定的团队用自己做的Excel表,临时性的、短期的项目就用那个在线工具,感觉这样效率比较高。

不管用哪种方法,能把考勤理清楚,节省点时间,减少点差错,目的就达到了。希望这些经验对你有帮助。