vba怎么设置excel时间(excelvbavb.net考勤时间处理通用方法)(1)

先看上图,这是一张非常普通的考勤统计表,多是从考勤机里面导出来的。所以我们可以清楚看到日期时间格式非常整齐,全无手工做表痕迹。(那些还在用原始手工方法打考勤的,填表、整理、统计估计会喷一口老血。)

现在重点关注一下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就是最终结果,考勤合规则返回日期,否则返回空串

下面开始主控程序遍历:

vba怎么设置excel时间(excelvbavb.net考勤时间处理通用方法)(2)

这时为方便演示只遍历了2到40行,把结果输出在I列,如果合规就输出“正常考勤”

vba怎么设置excel时间(excelvbavb.net考勤时间处理通用方法)(3)

升级问题一:如果要统计某个员工哪一天多次考勤情况,怎么办?

欢迎关注,下期继续。

,