+ -
当前位置:首页 → 问答吧 → !!!帮忙编辑个全勤VBA

!!!帮忙编辑个全勤VBA

时间:2011-08-07

来源:互联网

帮忙编辑个全勤公式!
1.七月份考勤表里有新近员工,比如只出勤14天,但也是全勤
2.本公司每月4天带薪假期,所以31-4=27天是全勤,30-4=26天是全勤
3.这个表格是我在网上下载的模板,希望也可以实现根据月份变化的全勤公式。
4.新进的员工就是前面几天都没有考勤的,是空白项,注:应该是每个月都会有新近员工,一般都排在表格最下面
5.出勤是出勤,迟到是迟到,
6.用VBA可以啊,只是自己知识面有限,还想不到这些,可以一个单元格一个名字。
7.您做个模板出来,我自己再学习,练习用VBA做迟到,休假的单元格,
比如是六月公式会自动识别出30天中实际出勤26天就是全勤的员工名字
      七月公式会自动识别出31天中实际出勤27天就是全勤的员工名字


能不能在这个表上做个个单元格。可以自动体现出上全勤员工的名字。不用可以敲打出来

附件

1.jpg(139.93 KB)

2011-8-7 11:21

2.jpg(23.25 KB)

2011-8-7 11:21

考勤表.rar(39.77 KB)

2011-8-7 11:21, 下载次数: 14

作者: 党莎   发布时间: 2011-08-07

请测试
Sub Macro1()
    Dim arr, m%, i&, s$
    m = Day(DateSerial(Year(Date), [g1] + 1, 0)) - 4
    arr = Range("A1:AH" & Range("A65536").End(xlUp).Row)
    With WorksheetFunction
        For i = 7 To UBound(arr) Step 2
            If arr(i, 34) >= m Or .CountIf(Cells(i, 3).Resize(, 31), "") + .CountIf(Cells(i, 3).Resize(, 31), "√") >= m Then s = s & "," & arr(i, 1)
        Next
    End With
    Cells(UBound(arr) + 5, 2) = Mid(s, 2)
End Sub

作者: zhaogang1960   发布时间: 2011-08-07

李俊楠出勤19天休假2天  应该算全勤的,
张慧慧出勤13.5天休假0.5天  也应该算全勤的。

作者: 蓝桥玄霜   发布时间: 2011-08-07

2楼用空格+出勤好像不妥,下面用迟到+休息+旷工<=4判断:
Sub Macro2()
    Dim arr, m%, i&, s$
    m = Day(DateSerial(Year(Date), [g1] + 1, 0)) - 4
    arr = Range("A1:AH" & Range("A65536").End(xlUp).Row)
    With WorksheetFunction
        For i = 7 To UBound(arr) Step 2
            If arr(i, 34) >= m Then
                s = s & "," & arr(i, 1)
            ElseIf .CountIf(Cells(i, 3).Resize(, 31), "○") + .CountIf(Cells(i, 3).Resize(, 31), "△") + .CountIf(Cells(i, 3).Resize(, 31), "※") <= 4 Then
                s = s & "," & arr(i, 1)
            End If
        Next
    End With
    [b92] = Mid(s, 2)
End Sub

作者: zhaogang1960   发布时间: 2011-08-07

相关阅读 更多