ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 12242|回复: 12

[分享] VBA考勤编程

[复制链接]

TA的精华主题

TA的得分主题

发表于 2015-7-13 21:57 | 显示全部楼层 |阅读模式
本帖最后由 onlycxb 于 2015-7-21 09:24 编辑

VBA考勤简要流程
                  
       现在企业中,利用考勤机实施对人员考勤已经十分普遍。虽然有些考勤机厂商提供了相应的统计软件,对人员考勤情况能够进行简单的分析,但结合企业自身实际,定制相应的考勤程序进行对考勤数据的灵活分析、数据统计仍十分必要。
Excel作为目前最为常见的办公表格软件,其应用人群十分广泛,Excel作为考勤统计臷体十分方便,且由于VBA编程代码保存在工作簿内,不需要借助其他编辑器,编程成本小,易于修改完善。
以下为VBA考勤数据统计表格截图,主要流程如下:
1.根据使用者在不同条件下统计需求,分别设置了分步操作方法和一键汇总两种执行方法。
   22.jpg
2.建立统计规则字典
将考勤过程中存在的漏打卡、迟到、早退、缺勤情况利用代码建立纠察字典。(一天四次打卡规则应该有几十种之多),字典item列表如下:
guizhe.PNG
3.分析考勤数据,形成统计分析表。
(1)将企业下属单位各考勤机原始数据存放在该工作簿下的子文件夹“各单位考勤数据”中,利用VBA编码实现跨工作簿数据合并。
(2)设定统计参数(3)对合并汇总后的数据,排除周六周日和节假日,依据统计【规则字典】,进行对比统计分析。
23.jpg
   4.对分析后的数据进行统计,形成统计结果
113.png
            以上文字只涉及统计流程,未涉及具体代码


TA的精华主题

TA的得分主题

 楼主| 发表于 2015-7-13 21:59 | 显示全部楼层
图片没上来,直接上附件,为word文档压缩,只涉及流程,不涉及代码.希望大家能够多提供些思路和建议 考勤VBA编程.rar (263.23 KB, 下载次数: 822)

TA的精华主题

TA的得分主题

发表于 2015-7-13 23:06 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-7-13 23:20 | 显示全部楼层
带劲儿 发表于 2015-7-13 23:06
额...我正在搞..只搞了个初步的耶因为最近太忙了呢
http://club.excelhome.net/thread-12165 ...

搞好了,发图欣赏一下啊

a3.gif

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-7-13 23:33 | 显示全部楼层
本帖最后由 onlycxb 于 2015-7-13 23:44 编辑

带劲儿 发表于 2015-7-13 23:06
额...我正在搞..只搞了个初步的耶因为最近太忙了呢
http://club.excelhome.net/thread-12165 ...

      我的是一天至少打四次卡的,采用的是考勤机的原始数据,一键完成.经过某企业验证中,现在数据自动计算结果与手工计算结果比对效果还不错,正在验证中......   


      我也不是搞考勤统计的专业人员,听说还有一天三次打卡的,手头没数据,不知道打卡规则是什么,很期待有专业统计人员讲解一下.

下面转贴看你的大作.

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-7-13 23:45 | 显示全部楼层
还补充一点,就是这类统计表格操作不要太繁琐,最好一二步就完成.只要把客户想看和想要的东西呈现出来就可以了.

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-7-16 14:37 | 显示全部楼层
此考勤系统优化中……

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-10-25 07:15 | 显示全部楼层
看到一则关于考勤机原始数据处理的贴子http://club.excelhome.net/thread-999277-1-1.html,利用早起时间做了个练习
捕获.PNG
  1. Sub 整理考勤数据格式()
  2.     Dim MyTime As Date, D, KqData, i, S As String, tmp, arrdata(1 To 10000, 1 To 3)
  3.     Set D = CreateObject("scripting.dictionary")
  4.     KqData = Intersect(ActiveSheet.UsedRange, ActiveSheet.Range("A:B"))
  5.     For i = 2 To UBound(KqData, 1)
  6.         S = "'" & KqData(i, 1) & Format(KqData(i, 2), "yyyy-mm-dd")
  7.         If Not D.exists(S) Then
  8.             D(S) = "'" & Format(KqData(i, 2), "hh:mm")
  9.         Else
  10.             D(S) = D(S) & Space(1) & Format(KqData(i, 2), "hh:mm")
  11.         End If
  12.     Next i
  13.     tmp = Application.Transpose(Array(D.keys, D.items))
  14.     For i = 1 To UBound(tmp, 1)
  15.         arrdata(i, 1) = Mid(tmp(i, 1), 1, Len(tmp(i, 1)) - 10)
  16.         arrdata(i, 2) = "'" & Right(tmp(i, 1), 10)
  17.         arrdata(i, 3) = tmp(i, 2)
  18.     Next i
  19.     ActiveSheet.[G10].Resize(D.Count, 3) = arrdata '根据实际需要设置数据位置
  20. End Sub
复制代码


TA的精华主题

TA的得分主题

 楼主| 发表于 2015-10-25 07:18 | 显示全部楼层
楼上并非原题,增加了员工编号,并将每日员工考勤数据放到一个单元格内。个人习惯问题!
2013.3考勤记录.zip (13.1 KB, 下载次数: 559)

TA的精华主题

TA的得分主题

发表于 2016-4-23 00:38 | 显示全部楼层
onlycxb 发表于 2015-10-25 07:15
看到一则关于考勤机原始数据处理的贴子http://club.excelhome.net/thread-999277-1-1.html,利用早起时间做 ...

想请教如果我只想要把同一天的数据放在同一行,不需要变更24小时制,那vba要怎么编啊,新人求救T^T
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-17 11:48 , Processed in 0.041778 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表