一大早学习群内的人都说要考勤表,好,既然你要,我总结一些我用过的考勤表。考勤表比较特殊,每个公司都略有差异,仅供参考。
1、手工记录考勤明细
借助手工输入简称,比如Z就表示正常上班。
员工考勤表
统计表
考勤明细
现在要将考勤数据导入到另外一个表格模板。
转换表
接下来就是见证奇迹的时刻!
只需点一下导入考勤,瞬间就将数据实现转换。如果你眼神比较好,就知道这是我们公司的考勤表。
附源代码:
Sub Kaoqin()
Dim MxSht, MxsR As Long, MxNRng As Range, NameArr
Dim MaxR As Long, MaxC As Byte, KaoQ() As String
Dim NBoot As Boolean, StaR As Long, TemRng, Cou As Long
Dim iR As Long, iC As Byte, MxR As Long, MxC As Byte
Sheet1.Range("D5:AI104").UnMerge
With Sheet2
Rem
MxsR = .Cells(1, 1).End(xlDown).Row
' MxSht = .Cells(1, 1).Resize(MxsR, 6).Value
Set MxNRng = .Cells(1, 2).Resize(MxsR)
MaxR = Me.Cells(5, 3).End(xlDown).Row - 4
MaxC = Me.Cells(4, Columns.Count).End(xlToLeft).Column - 4
ReDim KaoQ(1 To MaxR, 1 To MaxC)
NameArr = Me.Cells(5, 2).Resize(MaxR).Value
For iR = 1 To MaxR Step 2
Rem 姓名存在否
NBoot = WorksheetFunction.CountIf(MxNRng, NameArr(iR, 1))
Rem 存在时处理考勤数据
If NBoot Then
StaR = WorksheetFunction.Match(NameArr(iR, 1), MxNRng, 0)
Cou = WorksheetFunction.CountIf(MxNRng, NameArr(iR, 1))
TemRng = .Cells(StaR, 2).Resize(Cou, 5).Value
Rem 日期核对数据写入,上班下班的数据
For MxR = 1 To Cou
KaoQ(iR, Day(TemRng(MxR, 3))) = TemRng(MxR, 4) '对应日期上班时间数据
KaoQ(iR 1, Day(TemRng(MxR, 3))) = TemRng(MxR, 5) '对应日期下班时间数据
Next MxR
End If
Next iR
End With
Me.Cells(5.1).Resize(MaxR) = NameArr
Me.Cells(5, 4).Resize(MaxR, MaxC) = KaoQ
End Sub
3、系统导出考勤表并实现统计工资
这也是我以前公司使用过的考勤表。
系统考勤明细
先通过分列,将内容显示在3列。
因为我们打卡的时候,有的时候会打不止一次,比如50秒打完卡,51秒又不小心按了一次,这就出现了2条记录。对于这种需要重新处理,判断是否为首次出现。
在E2输入公式,并向下填充。首次出现的显示1,否则显示空白。
=IF(COUNTIFS(A$2:A2,A2,B$2:B2,B2,C$2:C2,C2)=1,1,"")
这边采用的是日薪的方法统计工资的,日薪采用随机数,你懂的!
在工资表B3输入公式,并向下填充。上班天数是根据考勤表汇总得到,因为时间段是以半天算,所以最后面乘以0.5。
=SUMIF(考勤记录!A:A,A3,考勤记录!E:E)*0.5
日薪:
=VLOOKUP(A3,日薪对应表!A:B,2,0)
基本工资:
=ROUND(B3*C3,0)
我接触过的考勤系统都算比较标准的,遇到下面这种考勤系统,我就跪了!
一天打N次卡,而且还放在一个单元格,这种系统要你何用?
各种财务和会计模板,有需要的后台回复关键词“621”领取。
End.
来源:Excel不加班
国统计网,是国内最早的大数据学习网站,欢迎关注!,