ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[已解决] 考勤机导出的考勤表数据自动处理问题?(谢谢大家了)

[复制链接]

TA的精华主题

TA的得分主题

发表于 2013-3-8 16:12 | 显示全部楼层 |阅读模式
本帖最后由 zengsijun 于 2013-3-13 21:33 编辑

这是考勤机导出的考勤表,现需对其中的数据进行统计分析,用VBA自动将其结果填入2月份出勤表1、2月出勤异常表、2月年假统计表,数据来源均来自于该表。其中人员、行数均不固定, 要求,能进行动态更新!谢谢了!(附件已更新!)
2月份出勤表修.rar (5.71 KB, 下载次数: 250)
1.jpg
3.jpg
4.jpg
2.jpg

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-3-8 16:24 | 显示全部楼层
请问哪位大侠能否伸出援助之手,谢谢了!

TA的精华主题

TA的得分主题

发表于 2013-3-8 16:25 | 显示全部楼层
这个貌似没有太大的必要用VBA,用透视表分类汇总一下就可以了。

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-3-8 16:44 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
透视表太麻烦了,我觉得还是用VBA好些!请大侠出手相助了,谢谢!

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-3-8 17:51 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-3-8 20:26 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2013-3-8 21:14 | 显示全部楼层
本帖最后由 mjzxlmg 于 2013-3-8 21:54 编辑

搞不明白,早退是如何判断的
异常表的开始、结束时间等不清楚是如何得来的

[code=vb]Sub test() '引用 Microsoft Scripting Runtime
    Dim dic As New Dictionary, arr, brr(), i&, j&, m&, s&, crr(), n&, drr, col&
    Sheet1.Activate
    arr = [a1].CurrentRegion.Value
    col = Val(ActiveSheet.Name) + 1
    ReDim brr(1 To UBound(arr), 1 To 7)
    ReDim crr(1 To UBound(arr), 1 To 6)
    ReDim drr(1 To UBound(arr), 1 To 1)
    For i = 2 To UBound(arr)
        s = dic(arr(i, 1))
        If s = Empty Then
            m = m + 1
            dic(arr(i, 1)) = m
            s = m
            brr(s, 1) = arr(i, 1)
        End If
        brr(s, 2) = brr(s, 2) + Val(arr(i, 6))
        brr(s, 3) = brr(s, 3) + Val(arr(i, 7))
        If Len(arr(i, 8)) Then brr(s, 4) = brr(s, 4) + 1
        brr(s, 6) = brr(s, 6) + Val(arr(i, 9))
        brr(s, 7) = brr(s, 7) + Val(arr(i, 10))
        drr(s, 1) = brr(s, 7)
        If Len(arr(i, 10)) Then
            n = n + 1
            crr(n, 1) = arr(i, 2)
            crr(n, 2) = arr(i, 1)
            If arr(i, 4) = "" And arr(i, 5) = "" Then
                crr(n, 3) = "8:30"
                crr(n, 4) = "18:00"
            ElseIf Len(arr(i, 4)) And arr(i, 5) = "" Then
                'crr(n, 3) = "8:30"
                'crr(n, 4) = "12:00"
            ElseIf Len(arr(i, 5)) And arr(i, 4) = "" Then
                crr(n, 3) = "8:30"
                crr(n, 4) = "12:00"
            Else
                crr(n, 3) = arr(i, 4)
                crr(n, 4) = arr(i, 5)
            End If
            crr(n, 5) = "年假"
            crr(n, 6) = arr(i, 10)
        End If
    Next
    Sheet2.[a5].Resize(m, 7).Value = brr
    Sheet3.[a5].Resize(n, 6).Value = crr
    Sheet4.Cells(5, col).Resize(m).Value = drr
    Set dic = Nothing
    Erase arr: Erase brr: Erase crr: Erase drr
End Sub[/code]

TA的精华主题

TA的得分主题

发表于 2013-3-8 22:06 | 显示全部楼层
看着 使用 透视表  或者分类汇总 可以得到结果。
不过楼主的 目的是想偷懒, 直接把结果输出到 表中来。
2月表1 中用公式即可。  异常中, 使用一个筛选 差不多 可以了。
年假中  也是 条件求和   
哈哈! 请问 你还有什么要求么? 非要VBA  就把 公式 写在代码中 来实现目标!
自己脑子 转转, 别遇到问题 往这里一丢, 人家没有义务,大家在这里是 兴趣和相互帮助!

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-3-9 17:18 | 显示全部楼层
早退可以不考虑,异常表的开始时间和结束时间都是从表1中查找得来的!

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-3-9 17:19 | 显示全部楼层
mjzxlmg大侠,我试了一下您的代码,显示定义错误,请问是什么原因?谢谢了!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-5-12 13:28 , Processed in 0.048971 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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