作为人事考勤人员(我不是),每月面对成千上万的考勤打卡记录,用眼睛逐个考核....请问眼睛还好吗(手动滑稽)

文笔不好,直接上干货吧

有如下原始考勤数据:原始打卡数据

由于员工害怕打卡失败,会多次重复打卡,导致每天的打卡次数非常多,比如上图13行到16行,此时会更加加重考勤人员的工作负担。那么如何更加快速考勤呢,接着往下看。

1、新建excel表(如果你的考勤机导出的数据和上图格式一样,次步骤跳过),将打卡数据复制到sheet1里,并保证B列为姓名,D列为打卡时间。

2、按组合键Alt+F11,打卡代码编辑器,复制如下代码到sheet2中

代码:

Sub x()

Dim arr As Variant

Dim Result() As String

Dim EndRow As Integer, EndCol As Integer, i As Integer, j As Integer, Re_r As Integer, Re_c As Integer, x As Integer

EndRow = Sheet1.Cells.Find("*", Sheet1.Cells(1, 1), xlValues, xlWhole, xlByRows, xlPrevious).Row

arr = Sheet1.Range("A2:D" & EndRow).Value

ReDim Result(1 To EndRow, 1 To 200)

Re_r = 1

For i = 1 To UBound(arr)

If i > 1 Then

If arr(i, 1) & arr(i, 2) & arr(i, 3) & Split(arr(i, 4), " ")(0) = arr(i - 1, 1) & arr(i - 1, 2) & arr(i - 1, 3) & Split(arr(i - 1, 4), " ")(0) Then

Re_c = Re_c + 1

'Result(Re_r, 1) = arr(i, 1)

'Result(Re_r, 2) = arr(i, 2)

'Result(Re_r, 3) = arr(i, 3)

'Result(Re_r, 4) = Split(arr(i, 4), " ")(0)

Result(Re_r, Re_c) = Split(arr(i, 4), " ")(1)

Else

Re_r = Re_r + 1

Re_c = 4

Result(Re_r, 1) = arr(i, 1)

Result(Re_r, 2) = arr(i, 2)

Result(Re_r, 3) = arr(i, 3)

Result(Re_r, 4) = Split(arr(i, Re_c), " ")(0)

Result(Re_r, 5) = Split(arr(i, Re_c), " ")(1)

Re_c = Re_c + 1

End If

Else

Result(Re_r, 1) = arr(i, 1)

Result(Re_r, 2) = arr(i, 2)

Result(Re_r, 3) = arr(i, 3)

Result(Re_r, 4) = Split(arr(i, 4), " ")(0)

Result(Re_r, 5) = Split(arr(i, 4), " ")(1)

Re_c = 5

End If

Next

EndRow = Sheet2.Cells.Find("*", Sheet2.Cells(1, 1), xlValues, xlWhole, xlByRows, xlPrevious).Row

If EndRow >= 1 Then

EndCol = Sheet2.Cells.Find("*", Sheet2.Cells(1, 1), xlValues, xlWhole, xlByColumns, xlPrevious).Column

Sheet2.Range(Sheet2.Cells(2, 1), Sheet2.Cells(EndRow, EndCol)).Clear

End If

Sheet2.Range("F2").Resize(UBound(Result), UBound(Result, 2)) = Result

End Sub

Sub x2()

Dim DIC As New Dictionary

Dim arr As Variant

Dim Result() As String

Dim EndRow As Integer, EndCol As Integer, i As Integer, j As Integer, Re_r As Integer, Re_c As Integer, x As Integer

Dim AT1 As Variant, AT2 As Variant, BT1 As Variant, BT2 As Variant

EndRow = Sheet2.Cells.Find("*", Sheet2.Cells(1, 1), xlValues, xlWhole, xlByRows, xlPrevious).Row

EndCol = Sheet2.Cells.Find("*", Sheet2.Cells(1, 1), xlValues, xlWhole, xlByColumns, xlPrevious).Column

If EndRow <= 1 Then

MsgBox "无考勤数据。", vbInformation, "提示"

Exit Sub

End If

ReDim Result(1 To EndRow, 1 To 4)

For i = 1 To EndRow

For j = 1 To 4

Result(i, j) = "E" 'E表示打卡异常,N表示正常,假设开始都是异常

Next

Next

Result(1, 1) = "上上"

Result(1, 2) = "上下"

Result(1, 3) = "下上"

Result(1, 4) = "下下"

For i = 2 To EndRow

For j = 10 To EndCol

sj = Cells(i, j)

If Cells(i, j) <> "" Then

If CDate(sj) <= #8:45:00 AM# Then

Result(i, 1) = "N"

'Exit For

End If

If CDate(sj) >= #11:50:00 AM# And CDate(sj) <= #1:00:00 PM# Then

Result(i, 2) = "N"

'Exit For

End If

If CDate(sj) >= #1:00:00 PM# And CDate(sj) <= #2:45:00 PM# Then

Result(i, 3) = "N"

'Exit For

End If

If CDate(sj) >= #5:20:00 PM# Then

Result(i, 4) = "N"

'Exit For

End If

Else

Exit For

End If

Next

Next

Sheet2.Cells(1, EndCol + 1).Resize(UBound(Result), UBound(Result, 2)) = Result

End Sub

如下图:代码位置

3、分别在表sheet1和sheet2中添加2个按钮,指定sheet1中的按钮的宏为x,sheet2的按钮指定宏为x2按钮添加及设置

4、宏指定完成后,点击sheet1中的按钮进行打卡时间转换和去重自动转换后的数据

5、接着点击sheet2中的按钮,进行迟到早退等情况的判断,如下图,R-U列显示结果,N表示正常,E表示异常。有4列结果是因为一天要打4次卡。考勤结果

6、其他说明

a、文中sheet1的表名称为“原始数据”,sheet2的表名称“转换”

b、文中的工作时间为8:45-11:50(上午),11:50-14:30(午饭),14:30-5:20(下午),根据需要,自行修改时间

你们看明白了吗?不能上传文件,不然你们就可以用现成的了。

如果赞上1K,下期就再讲讲下图类型的打卡时间如何快速考勤吧

如何用python处理excel简单考勤统计_如何使用Excel快速考勤,统计迟到早退等情况?...相关推荐

  1. python爬虫图片-如何用Python来制作简单的爬虫,爬取到你想要的图片

    原标题:如何用Python来制作简单的爬虫,爬取到你想要的图片 在我们日常上网浏览网页的时候,经常会看到一些好看的图片,我们就希望把这些图片保存下载,或者用户用来做桌面壁纸,或者用来做设计的素材. 我 ...

  2. python爬虫抢火车票_如何用python写一个简单的12306抢票软件|python 爬火车票 教程...

    python 如果抓取验证码图片 类似12306的登录验证码图片 这个以前做次.最大的麻烦是码的识别算法的识别率太低.12306那种网站登陆错3次就限制你20分钟.所以除非你有33%以上的识别率否则不 ...

  3. python批量下载文件只有1kb_详解如何用python实现一个简单下载器的服务端和客户端...

    话不多说,先看代码: 客户端: import socket def main(): #creat: download_client=socket.socket(socket.AF_INET,socke ...

  4. excel 复制 格式不变_ 如何复制Excel表格保持格式及列宽不变

    excel 复制 格式不变_ 如何复制Excel表格保持格式及列宽不变 == excel 粘贴的时候,经常格式就乱了,我们想要保持原来的样式. 有的之后粘贴后,右下角有个 图标 可以选择 保留原格式. ...

  5. 怎样用python搭建简单的系统_如何用Python搭建一个简单的推荐系统?

    推荐系统的相关知识我们已在前文中提到,在这篇文章中,我们会介绍如何用Python来搭建一个简单的推荐系统. 本文使用的数据集是MovieLens数据集,该数据集由明尼苏达大学的Grouplens研究小 ...

  6. python旅游推荐系统_如何用Python搭建一个简单的推荐系统?

    推荐系统的相关知识我们已在前文中提到,在这篇文章中,我们会介绍如何用Python来搭建一个简单的推荐系统. 本文使用的数据集是MovieLens数据集,该数据集由明尼苏达大学的Grouplens研究小 ...

  7. 【Python】如何用python做一个简单的输入输出交互界面?

    看到知乎上有人在问,如何使用Python做一个简单的输入输出交互界面? 交互界面就涉及到GUI编程. Python有很多GUI框架,功能大同小异. 其中比较出名的有「PyQT」.**wxPython. ...

  8. python解析器是什么_如何用python写一个简单的词法分析器

    编译原理老师要求写一个java的词法分析器,想了想决定用python写一个. 目标 能识别出变量,数字,运算符,界符和关键字,用excel表打印出来. 有了目标,想想要怎么实现词法分析器. 1.先进行 ...

  9. 国外大牛教你,如何用Python开发一个简单的区块链数据结构| 建议收藏

    来源 | Medium 作者 | arjuna sky kok 整理 / Aholiab 出品 | 区块链大本营(blockchain_camp) 根据IEEE此前的一项调查,Python已成为最受开 ...

最新文章

  1. ArrayList初步
  2. Boost 库中的实用工具类使用入门
  3. OSError: [Errno 1] Operation not permitted 问题解决
  4. 由浅到深理解ROS(8)-线程管理
  5. python编写递归函数和非递归函数、输出斐波那契数列_分别用非递归和递归的方法编写函数求斐波那契数列第n项。斐波那契数列1,1,2,3,5,8,13,…...
  6. Leetcode-整数反转 C++
  7. postman在线测试_如何选择适合自己的自动化测试工具?
  8. Nutanix推出云基础架构远程管理IT解决方案
  9. 测试tf卡读写速度软件,U盘测速图文教程,优盘读写速度测试,移动硬盘TF卡SD内存卡测速...
  10. 利用Aforge Net实现两张图的查找不同处、抠图、合成图
  11. 【第3版emWin教程】第14章 emWin6.x的2D图形库之基本绘图
  12. 鸡得呼吸道病会易发啥病 鸡喂什么药预防打喷嚏
  13. FPGA复位电路设计学习分析
  14. Visual Studio 6.0下载地址
  15. 计算机求导方法:自动微分(Automatic Differentiation)
  16. 导数的几何意义和物理意义, 求曲线y=f(x) 在相应点处的切线方程,法线方程
  17. 文玩第一股,微拍堂跑在了玩物得志前面?
  18. 高维数组matlab,MATLAB 高维数组
  19. 面试被问到为什么离职该怎么回答
  20. macos\Linux下使用fcrackzip破解zip压缩文件密码

热门文章

  1. 《道德经》最厉害8种思维,读完真的不一样!
  2. Http-Post请求特殊符号变空格的问题解决
  3. GameFi:元宇宙中的 DeFi
  4. minitorch系列记录——3. 自动求导
  5. 开我的世界服务器什么系统好,《我的世界》1.0服务器哪个好 1.0服务器地址大全...
  6. MySQL系列:javaexcel合并单元格清除重复
  7. Android应用程序性能优化
  8. 测试人员在敏捷测试中的关注点
  9. 2021年西式面点师(中级)考试及西式面点师(中级)作业考试题库
  10. 后台服务配制以及代码生成[木字楠博客]