vba考勤处理

Sub 统计人数()
'A为号码C姓名 D时间 Dim j As Integer
j = 1 For i = 2 To 100000 Step 1 If Range("a" & i).Value <> Range("a" & i + 1).Value Then j = j + 1 Sheets("sheet3").Range("a" & j).Value = Range("a" & i).Value
Sheets("sheet3").Range("b" & j).Value = Range("c" & i).Value Else: If Range("a" & i).Value = "" Then End End If
Next i End Sub Sub 统计迟到早退()
'Sheets("sheet3").Range("c" & j).Value = 1
Dim a, b, c, j As Integer j = 1
For i = 2 To 100000 Step 1
a = Sheets("sheet1").Range("a" & i).Value
b = Sheets("sheet3").Range("a" & j).Value
c = Sheets("sheet1").Range("d" & i).Value
If a = "" Then Exit For
If a - b = 0 Then Sheets("sheet3").Range("c" & j).Value = Sheets("sheet3").Range("c" & j).Value + 0.5 '判断时间 经理9:00 员工9:20
d = Val(Format(c, "hhnn"))
e = Format(c, "d") 'If d - 900 > 0 And d - 900 < 300 Then
' Sheets("sheet3").Range("i" & j).Value = Sheets("sheet3").Range("i" & j).Value & e & "、"
' End If If d - 920 > 0 And d - 920 < 280 Then
Sheets("sheet3").Range("i" & j).Value = Sheets("sheet3").Range("i" & j).Value & e & "迟到、"
End If
If d - 1200 < 600 And d - 1200 > 0 Then
Sheets("sheet3").Range("h" & j).Value = Sheets("sheet3").Range("h" & j).Value & e & "早退、"
End If
Else
j = j + 1
Sheets("sheet3").Range("c" & j).Value = 0.5
'MsgBox (a)
'MsgBox (b) End If Next i End Sub
Sub 统计上下午未打卡() Dim a, b, c, j As Integer j = 1 For i = 2 To 100000 Step 1
a = Sheets("sheet1").Range("a" & i).Value
l = Sheets("sheet1").Range("a" & i + 1).Value
b = Sheets("sheet3").Range("a" & j).Value
c = Sheets("sheet1").Range("d" & i).Value
d = Sheets("sheet1").Range("d" & i + 1).Value
g = Sheets("sheet1").Range("d" & i - 1).Value
e = Format(c, "d")
f = Format(d, "d")
h = Format(g, "d")
k = Format(c, "h")
If a = "" Then Exit For If a - b = 0 Then If e <> f And e <> h And k < 12 Then Sheets("sheet3").Range("j" & j).Value = Sheets("sheet3").Range("j" & j).Value & e & "下午、" End If If e <> f And e <> h And k > 12 Then Sheets("sheet3").Range("j" & j).Value = Sheets("sheet3").Range("j" & j).Value & e & "上午、" End If Else: j = j + 1
If e <> f And k > 12 Then
Sheets("sheet3").Range("j" & j).Value = e & "上午\、"
End If
If k < 12 And e <> f Then
Sheets("sheet3").Range("j" & j).Value = e & "下午\、"
End If
End If Next i End Sub Sub 填写第一行()
Sheets("sheet3").Range("a" & 1).Value = "考勤号码"
Sheets("sheet3").Range("b" & 1).Value = "姓名"
Sheets("sheet3").Range("c" & 1).Value = "出勤天数"
Sheets("sheet3").Range("h" & 1).Value = "早退"
Sheets("sheet3").Range("i" & 1).Value = "迟到"
Sheets("sheet3").Range("j" & 1).Value = "未打卡"
End Sub Sub test()
'Dim arry(1 To 2) As Integer
c = Sheets("sheet1").Range("d" & 29).Value
'arry(1) = 23
'arry(2) = 909
a = DateAdd("n", 20, c)
MsgBox (Format(c, "hh") > 12) End Sub
vba考勤处理的更多相关文章
- 20190319xlVBA_根据考勤数据统计缺勤缺考数据
Sub SubtotalPickFile() Dim StartTime As Variant Dim UsedTime As Variant StartTime = VBA.Timer Dim fi ...
- 使用VBA,优化处理Excel表格
前言 上周末,XX给我抱怨:因为计算绩效奖金,把2个人的工资发错了,还被扣了500元.问的缘由得知,她每个月要处理十来个excel表格,每次都要手动修改里面的值,如果修改了一处,其他地方也要修改,然后 ...
- VBA 格式化字符串 - Format大全
VBA 格式化字符串 VBA 的 Format 函数与工作表函数 TEXT 用法基本相同,但功能更加强大,许多格式只能用于VBA 的 Format 函数,而不能用于工作表函数 TEXT ,以下是本人归 ...
- VBA学习
1. Range / Cells / Columns / Rows 2. 绝对引用 $F$13 / 相对引用 F13 公式所在单元格的被复制到其他位置时,绝对引用不变 3. VLookup / NLo ...
- VBA学习思路
打算花两三天学习VBA的基础,学习资料为<别怕,VBA其实很简单>,为了快速学习,先了解大致框架,后续再深入学习各种属性.方法和技巧. 1.VBA编程环境基本操作,手工操作,熟悉即可 2. ...
- VBA笔记(三)——常用对象
VBA实际上就是操作Excel,把Excel进行拆解,划分多层对象,由顶至下为(也可以说是层层包裹): Application:代表Excel程序本性,之后我们操作对象都在它之下,因为是唯一且至高点, ...
- VBA中使用计时器的两种方法
'================================ ' VBA采用Application.OnTime实现计时器 ' ' http://www.cnhup.com '========= ...
- 考勤系统代码分析——主页布局easyui框架
考勤系统主页的布局用的是easyui的Layout控件 Layout:布局容器有5个区域:北.南.东.西和中间.中间区域面板是必须的,边缘的面板都是可选的.每个边缘区域面板都可以通过拖拽其边框改变大小 ...
- VBA初试——合并
今天遇到一个任务,要把excel中的相同行合并:没有找到直接的办法(vlookup大概能做),试了试VBA挺好用 数据结构 第一.二列是描述字段,第二列元素唯一:第三到第八列是标志位 任务 合并描述字 ...
随机推荐
- 执行此安装程序之前,必须安装 32 位 Windows 映像处理组件(WIC)解决的方法
我们在Windows Service 2003上安装 Microsoft .NET Framework4.0时常常出现以下的报错 执行此安装程序之前,必须安装 32 位 Windows 映像处理组件( ...
- mysql sql limit where having order
SQL语句执行顺序及MySQL中limit的用法 . 分类: MySql2013-09-02 09:1315人阅读评论(0)收藏举报 写的顺序:select ... from... where.... ...
- 安装Oracle11后在SQL Developer启动时提示:enter the full pathname for the java.exe
1) Open the file ..\sqldeveloper\sqldeveloper\bin\sqldeveloper.conf and add the following line to se ...
- SQL Server 强行Insert包含自增列值的记录
SET IDENTITY_INSERT 表 ON INSERT INTO 表 ([ID] ,[SequenceNumber] ,[EnumCode] ,[Description]) VALUES ( ...
- C#中decimal的用法
decimal拥有比float更高的精度,最高能处理到小数点后面的28位.适合用在财务类等对数字精确度要求比较高的场合. using System; using System.Collections. ...
- 为net-snmp添加读readTimeTicks
function readTimeTicks(time){ if(time === 0) return ''; var d = 0, h = 0, m = 0, s = 0; d = parseInt ...
- iOS中json解析出现的null,nil,NSNumber的问题
在iOS开发过程中经常需要与服务器进行数据通讯,Json就是一种常用的高效简洁的数据格式. 问题现象 但是几个项目下来一直遇到一个坑爹的问题,程序在获取某些数据之后莫名崩溃.其实很早就发现了原因:由于 ...
- asp生命周期
笔记:如果不对,欢迎指出来. 当一个用户访问一个页面,实际是发送http请求到服务器,而http请求其实是socket发送特定规范(协议)的文字(报文). 然后服务器的http.sys内核模块接受 请 ...
- 放大镜效果之js
HTML代码: div.box>div#left+div#buttom+div#right div#left>img div#buttom>div.small>img CSS代 ...
- Ecsotre 参考
2.dbschema dbschema 字段属性 ‘type’ => ‘int unsigned’, //字段类型 ‘extra’ => ‘auto_increment’,//定义自增 ‘ ...