考勤加列及引用自定义函数

Sub 考勤加列()
introw = [a655536].End(xlUp).Row
Dim rng As Range
If Not Range("c1").Value Like "有效签到" Then '如无指定列,插入空列
Columns("C:C").Select
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
       
    Columns("C:H").Select
    Selection.NumberFormatLocal = "h:mm;@"
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
Range("c1").Value = "有效签到"
Range("d1").Value = "签到状态"
Range("e1").Value = "有效签离"
Range("f1").Value = "签离状态"
Range("g1").Value = "工作时长"
Range("h1").Value = "考勤评测"
Range("i1").Value = "考勤天数"
Range("j1").Value = "早退次数"
'Range("i2").Value = "=IF(AND(G2>=2/24,G2<5/24),0.5,IF(AND(G2>=5/24,G2<=8/24),1,0))"

Range("i2").Value = "=IF(OR(AND(G2>=2/24000,G2<5/24),AND(G2=""--"",OR(C2<1,E2<1))),0.5,IF(AND(G2>=5/24,G2<=8/24),1,0))"
Range("j2").Value = "=IF(AND(G2>5/24,G2<7/24),1,0)"


End If
For Each rng In Sheet1.Range("a1:z1") '在首行找到相应的字段所在列值
'If rng = "最早签到时间" Then colu_c = rng.Column
If rng Like "最早签到时间" Then colu_c$ = VBA.Split(rng.Address, "$")(1)
If rng Like "最晚签到时间" Then colu_l$ = VBA.Split(rng.Address, "$")(1)
If rng Like "*签到标准*" Then colu_cs$ = VBA.Split(rng.Address, "$")(1)
If rng Like "*签离标准*" Then colu_ls$ = VBA.Split(rng.Address, "$")(1)
If rng Like "出勤状态" Then colu_zk$ = VBA.Split(rng.Address, "$")(1)
Next
Dim kk As New kq365
 
 't = 120
introw = [a655536].End(xlUp).Row
Dim i As Integer
For i = 2 To introw Step 1
tc = Range(colu_c & i)
tcs = Range(colu_cs & i)
 tl = Range(colu_l & i)
 tls = Range(colu_ls & i)
 zk = Range(colu_zk & i)
 '时间容差t,单位分钟

  myarr2 = kk.kq(tcs, tc, tls, tl, zk)
 
  Range("c" & i).Value = myarr2(0)
  Range("d" & i).Value = myarr2(1)
  Range("e" & i).Value = myarr2(2)
  Range("f" & i).Value = myarr2(3)
  Range("g" & i).Value = myarr2(4)
  Range("h" & i).Value = myarr2(5)
  Next
 
 
      Columns("C:j").Select
    Columns("C:j").EntireColumn.AutoFit

  Set kk = Nothing '释放类资源
End Sub

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值