先看上图,这是一张非常普通的考勤统计表,多是从考勤机里面导出来的。所以我们可以清楚看到日期时间格式非常整齐,全无手工做表痕迹。(那些还在用原始手工方法打考勤的,填表、整理、统计估计会喷一口老血。)
现在重点关注一下H列 打卡时间,我们要统计一下每天考勤时间。作为资深考勤管理人员都应该知道,考勤机无论是指纹还是面部识别或者其他智能手机wifi打卡,它所导出的数据并不知道哪个员工哪个时间段是否正常考勤。所以统计时必须要告诉程序,每天考勤时间范围是怎样的。
下面我们来做个演示,假定每天早上考勤时间定在"08:30"和"09:10"之间,起止点时间踩点可算合规。按照我们以前的思维逻辑,我们要先做个小函数来判断一下。这个核心函数在本例子中使用频率最高。直接上干货代码:
Function in考勤时间(考勤起点时间 As String, 考勤终点时间 As String, 考勤日期时间 As String)
Dim s As String=“”
Dim 考勤日期 As String = leftstr(考勤日期时间, 10)
Dim 考勤时间 As String = rightstr(考勤日期时间, 5)
If 考勤时间 >= 考勤起点时间 And 考勤时间 <= 考勤终点时间 Then
s = 考勤日期
End If
Return s '考勤合规则返回日期,否则返回空串
End Function
这个小函数简单明了,一看就明白了。比如要处理的考勤日期时间=“2017-12-04 09:00”
Dim 考勤日期 As String = leftstr(考勤日期时间, 10),考勤日期取得了最左边10 个字符也就是2017-12-04
Dim 考勤时间 As String = rightstr(考勤日期时间, 5)。考勤时间取得了最右边5个字符也就是09:00
If 考勤时间 >= 考勤起点时间 And 考勤时间 <= 考勤终点时间 Then
s = 考勤日期
End If
这个if用来判断考勤时间是不是比考勤起点时间大,并且比考勤终点时间时间小。
s就是最终结果,考勤合规则返回日期,否则返回空串
下面开始主控程序遍历:这时为方便演示只遍历了2到40行,把结果输出在I列,如果合规就输出“正常考勤”
升级问题一:如果要统计某个员工哪一天多次考勤情况,怎么办?欢迎关注,下期继续。
,