首页 > 其他分享 >关于考勤统计写的工具

关于考勤统计写的工具

时间:2024-02-05 10:12:44浏览次数:37  
标签:totalMins Cells 迟到 60 打卡 工具 Mins 考勤 统计

 1 '自动考勤计算
 2 'by Captain Amazing
 3 '2020/7/6
 4 '2022/7/4更新迟到写入功能
 5 '2023/7/3做大的更改
 6 Sub AutomaticAttendanceCounting()
 7                                         
 8     Dim s, partStr As String                                                            '声明打卡记录串
 9                                         
10     Dim bottom As Integer                                                               '表示最大使用的行数
11                                         
12     Dim Mins, totalMins As Integer                                                      '表示每次迟到分钟数和总计迟到分钟数
13                                         
14     m = Month(Now)                                                                      '取得当前月份, 年份
15     yy = Year(Now)
16     daysOfLastMonth = Day(DateSerial(yy, m, 1 - 1))                                     '获取当前月1号的前一天的日期数, 就是上月的天数
17                                         
18     bottom = ActiveSheet.UsedRange.Rows.Count                                           '设置最大行号
19                                         
20     For y = bottom To 1 Step -1
21         If Range("B" & y) = "1" Then
22             Rows(y + 1).Resize(2).Insert                                                '循环处理每一行, 遇到1号日期就插入两个空行用于统计
23             
24             For x = 2 To (daysOfLastMonth + 1) Step 1                                   '循环处理每一天
25 
26                 For n = y + 3 To bottom + 2
27                     s = s + Trim(Cells(n, x))                                           '将一天中所有的打卡记录合并在一起
28                 Next
29                                                                                         
30                 If Len(s) = 0 Then
31                     Cells(y + 1, x) = "请假"                                            '没有打卡记录算请假
32                 
33                 ElseIf Len(s) <= 6 Then
34                     Cells(y + 1, x) = "异常"                                            '一天只打一次卡标记为异常
35                 
36                 Else                                                                    '打两次以上卡根据时间来设置迟到或加班或早退
37 
38                     partStr = Left(s, 5)                                                '处理第一次打卡(上班)
39                     Mins = DateDiff("n", TimeValue("7:30"), TimeValue(partStr))
40                     
41                     If Mins > 0 And Mins < 60 Then
42                         Cells(y + 1, x) = "迟到" & Mins
43                         totalMins = totalMins + Mins
44                     ElseIf Mins >= 60 Then
45                         Cells(y + 1, x) = "上请"
46                     End If
47                                                                                         '处理最后一次打卡(下班)
48                     partStr = Right(s, 6)
49                     Mins = DateDiff("n", TimeValue("18:00"), TimeValue(partStr))
50                     
51                     If Mins >= 25 Then
52                         Cells(y + 2, x) = "加班" & Round(Mins / 60, 1)
53                     ElseIf Mins >= -60 And Mins < -30 Then
54                         Cells(y + 2, x) = "早退"
55                     ElseIf Mins < -60 Then
56                         Cells(y + 2, x) = "下请"
57                     End If
58                 End If
59                 
60                 s = ""                                                                  '处理完一天的上下班考勤数据后重置打卡变量s, 迟到分钟数
61                 Mins = 0
62             Next
63             
64             bottom = y - 2                                                              '处理完成某一员工, 向上移动2行, 即1号上面的2行, 写入迟到分钟数, 重置迟到总分钟数
65             Cells(y + 1, x + 1) = "迟到" & totalMins
66             totalMins = 0
67         End If
68     Next
69 End Sub

 

标签:totalMins,Cells,迟到,60,打卡,工具,Mins,考勤,统计
From: https://www.cnblogs.com/captionAmazing/p/18007452

相关文章

  • LbfoAdmin.exe 是一个用于管理和配置 Windows Server 中网络适配器绑定和负载均衡功能
    LbfoAdmin.exe是一个用于管理和配置WindowsServer中网络适配器绑定和负载均衡功能的命令行工具。以下是一些常用的LbfoAdmin.exe命令和参数:LbfoAdmin.exe/show:显示当前配置的适配器绑定和负载均衡设置。LbfoAdmin.exe/create/Team:"TeamName"/TeamMembers:"NIC1N......
  • ICD.exe 是一种用于创建和自定义 Windows 映像的工具,可以在离线或在线环境中运行
    Microsoft提供了WindowsImagingandConfigurationDesigner(ICD)工具,用于创建和自定义Windows映像。ICD工具可以帮助管理员轻松地创建、编辑和管理Windows映像,并提供了许多功能和选项来满足不同的需求。FFU(FullFlashUpdate)映像是一种完整的映像文件,可以在设备上......
  • Github开源项目Excalidraw:简洁易用的手绘风格白板工具
    Excalidraw是Github上的一个开源项目,它提供了一个简洁易用的手绘图形创建工具,用户可以通过它创建流程图、示意图、架构图和其他各种图形。本文将介绍Excalidraw的特点和功能,并探讨其在技术层面上的优势和扩展能力。GitHub地址:https://github.com/excalidraw/excalidraw/r......
  • 如何用ETL工具实现API调用
    一、API调用的好处 API调用有很多好处,下面列举了几个主要的优势:模块化和可重用性:API调用使得软件开发过程更加模块化和可用。通过将功能封装在API中,可以将其用作独立的模块,并在不同的应用程序或系统中进行重复使用,从而提高开发效率和代码质量。简化开发:API提供了一种简单的方......
  • PMP-6.11 控制采购-采购文档更新、合同管理、索赔管理(工具)
    一、控制采购基础内容  0.涉及领域:(1)需求管理计划需求管理计划描述将如何分析、记录和管理承包商需求。(2)风险管理计划风险管理计划描述如何安排和实施由卖方引发的项目风险管理活动。(3)采购管理计划采购管理计划规定了在控制采购过程中需要开展的活动。(4)变更......
  • 通信工具类countdownlatch和cyclicbarrier
    类作用semaphore限制线程数量exchanger两个线程交换数据countdownlatch递减屏障,线程等待直到计数器减为0时开始工作cyclicbarrier循环屏障,等屏障的线程数达到初始化值时,执行自定义的任务phaser增强的cyclicbarriercountdownlatch和cyclicbarrier区......
  • 安装dotnet下的诊断工具
    1.安装dotnet下的三个诊断工具dotnet-counters一个性能监视工具,用于临时运行状况监视和初级性能调查,你可以通过命令查看和存储,当前程序的运行时信息,它可以收集CPU,内存,GC,线程,异常等信息dotnet-trace一个跨平台的.NETCore工具,在不使用本机探查器的情况下启用正在运行的进......
  • JUC【1.原子类、2.锁Lock、3.阻塞队列、4.并发集合容器、5.并发工具类、6.线程池】、
    (JUC简介)转自极客时间1.JUC简介从JDK1.5起,JavaAPI中提供了java.util.concurrent(简称JUC)包,在此包中定义了并发编程中很常用的工具,比如:线程池、阻塞队列、同步器、原子类等等。JUC是JSR166标准规范的一个实现,JSR166以及JUC包的作者是同一个人DougLea。2.原......
  • 区间统计
    问题:根据J列数据分别统计等于1的客户数;大于1小于等于5的客户数;大于5小于等于7的客户数;大于7小于等于10的客户数;大于10小于等于15的客户数函数公式思路1:P4公式 =COUNTIF(J:J,O4)P5公式 =COUNTIFS(J:J,">"&O4,J:J,"<="&O5)P4公式计算J列中等于O4的个数P5公式计算J列中小于O......
  • hsv颜色提取小工具jcpicker介绍
    jcpicker.exe是一款绿色免安装颜色拾取器软件,约为2M大小,可以用于提取RGB颜色、HSV、HSL颜色值。双击jcpicker.exe打开软件后,如下图所示:                                            ......