如何用python处理excel简单考勤统计_如何使用Excel快速考勤,统计迟到早退等情况?...
作为人事考勤人员(我不是),每月面对成千上万的考勤打卡记录,用眼睛逐个考核....请问眼睛还好吗(手动滑稽)
文笔不好,直接上干货吧
有如下原始考勤数据:原始打卡数据
由于员工害怕打卡失败,会多次重复打卡,导致每天的打卡次数非常多,比如上图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快速考勤,统计迟到早退等情况?...相关推荐
- python爬虫图片-如何用Python来制作简单的爬虫,爬取到你想要的图片
原标题:如何用Python来制作简单的爬虫,爬取到你想要的图片 在我们日常上网浏览网页的时候,经常会看到一些好看的图片,我们就希望把这些图片保存下载,或者用户用来做桌面壁纸,或者用来做设计的素材. 我 ...
- python爬虫抢火车票_如何用python写一个简单的12306抢票软件|python 爬火车票 教程...
python 如果抓取验证码图片 类似12306的登录验证码图片 这个以前做次.最大的麻烦是码的识别算法的识别率太低.12306那种网站登陆错3次就限制你20分钟.所以除非你有33%以上的识别率否则不 ...
- python批量下载文件只有1kb_详解如何用python实现一个简单下载器的服务端和客户端...
话不多说,先看代码: 客户端: import socket def main(): #creat: download_client=socket.socket(socket.AF_INET,socke ...
- excel 复制 格式不变_ 如何复制Excel表格保持格式及列宽不变
excel 复制 格式不变_ 如何复制Excel表格保持格式及列宽不变 == excel 粘贴的时候,经常格式就乱了,我们想要保持原来的样式. 有的之后粘贴后,右下角有个 图标 可以选择 保留原格式. ...
- 怎样用python搭建简单的系统_如何用Python搭建一个简单的推荐系统?
推荐系统的相关知识我们已在前文中提到,在这篇文章中,我们会介绍如何用Python来搭建一个简单的推荐系统. 本文使用的数据集是MovieLens数据集,该数据集由明尼苏达大学的Grouplens研究小 ...
- python旅游推荐系统_如何用Python搭建一个简单的推荐系统?
推荐系统的相关知识我们已在前文中提到,在这篇文章中,我们会介绍如何用Python来搭建一个简单的推荐系统. 本文使用的数据集是MovieLens数据集,该数据集由明尼苏达大学的Grouplens研究小 ...
- 【Python】如何用python做一个简单的输入输出交互界面?
看到知乎上有人在问,如何使用Python做一个简单的输入输出交互界面? 交互界面就涉及到GUI编程. Python有很多GUI框架,功能大同小异. 其中比较出名的有「PyQT」.**wxPython. ...
- python解析器是什么_如何用python写一个简单的词法分析器
编译原理老师要求写一个java的词法分析器,想了想决定用python写一个. 目标 能识别出变量,数字,运算符,界符和关键字,用excel表打印出来. 有了目标,想想要怎么实现词法分析器. 1.先进行 ...
- 国外大牛教你,如何用Python开发一个简单的区块链数据结构| 建议收藏
来源 | Medium 作者 | arjuna sky kok 整理 / Aholiab 出品 | 区块链大本营(blockchain_camp) 根据IEEE此前的一项调查,Python已成为最受开 ...
最新文章
- ArrayList初步
- Boost 库中的实用工具类使用入门
- OSError: [Errno 1] Operation not permitted 问题解决
- 由浅到深理解ROS(8)-线程管理
- python编写递归函数和非递归函数、输出斐波那契数列_分别用非递归和递归的方法编写函数求斐波那契数列第n项。斐波那契数列1,1,2,3,5,8,13,…...
- Leetcode-整数反转 C++
- postman在线测试_如何选择适合自己的自动化测试工具?
- Nutanix推出云基础架构远程管理IT解决方案
- 测试tf卡读写速度软件,U盘测速图文教程,优盘读写速度测试,移动硬盘TF卡SD内存卡测速...
- 利用Aforge Net实现两张图的查找不同处、抠图、合成图
- 【第3版emWin教程】第14章 emWin6.x的2D图形库之基本绘图
- 鸡得呼吸道病会易发啥病 鸡喂什么药预防打喷嚏
- FPGA复位电路设计学习分析
- Visual Studio 6.0下载地址
- 计算机求导方法:自动微分(Automatic Differentiation)
- 导数的几何意义和物理意义, 求曲线y=f(x) 在相应点处的切线方程,法线方程
- 文玩第一股,微拍堂跑在了玩物得志前面?
- 高维数组matlab,MATLAB 高维数组
- 面试被问到为什么离职该怎么回答
- macos\Linux下使用fcrackzip破解zip压缩文件密码
热门文章
- 《道德经》最厉害8种思维,读完真的不一样!
- Http-Post请求特殊符号变空格的问题解决
- GameFi:元宇宙中的 DeFi
- minitorch系列记录——3. 自动求导
- 开我的世界服务器什么系统好,《我的世界》1.0服务器哪个好 1.0服务器地址大全...
- MySQL系列:javaexcel合并单元格清除重复
- Android应用程序性能优化
- 测试人员在敏捷测试中的关注点
- 2021年西式面点师(中级)考试及西式面点师(中级)作业考试题库
- 后台服务配制以及代码生成[木字楠博客]