Xử lý dữ liệu từ máy chấm công sang bảng chấm công

Liên hệ QC

dohuubang

Thành viên mới
Tham gia
12/12/09
Bài viết
2
Được thích
0
Mình làm bên hành chính, mà excel không rành lắm, nhờ mọi người làm giúp: chuyển dữ liệu chấm công từ máy chấm công (theo giờ), sang bảng chấm công (theo ký hiệu ngày công).
Quy định chấm công Cty:
Thời gian làm việc: làm từ thứ 2 đến sáng thứ 7 (Chiều thứ 7 nghỉ).
Sáng: Từ 08h đến 11h30'; Chiều 13h30' đến 17h00'.

File chấm công của Cty mình gửi mọi người làm dùm.
Mình xin cám ơn mọi người rất nhiều.
 

File đính kèm

Mình làm bên hành chính, mà excel không rành lắm, nhờ mọi người làm giúp: chuyển dữ liệu chấm công từ máy chấm công (theo giờ), sang bảng chấm công (theo ký hiệu ngày công).
Quy định chấm công Cty:
Thời gian làm việc: làm từ thứ 2 đến sáng thứ 7 (Chiều thứ 7 nghỉ).
Sáng: Từ 08h đến 11h30'; Chiều 13h30' đến 17h00'.

File chấm công của Cty mình gửi mọi người làm dùm.
Mình xin cám ơn mọi người rất nhiều.
Wow...
Làm dùm rồi có nhận lương dùm không bạn?
Đề xuất cho bạn: Làm ở bộ phận nhân sự liên quan đến chấm công thì bạn nên tìm hiểu tất cả các hàm xử lý về thời gian.
Mắc ở đâu, nhờ hướng dẫn ở đó chứ bảo mọi người làm thay là không ổn à nha!
 
Xử lý từ file chấm công máy ( bản gốc) còn nhanh hơn là xử lý lại file tổng hợp của bạn.
Nếu bạn không có bản chấm công gốc thì có lẽ chẳng ai đủ kiên nhẫn để code cho bạn đâu! ( Cái này là suy bụng ta ra nha, xin lỗi trước các thành viên cực kiên nhẫn.)
Bản gốc không nhất thiết phải là Excel, chỉ cần có dạng: Mã, Tên, Ngày giờ in1, out1, in2, out2...
Các thành viên có thể giúp bạn tính tròn công thôi, phần còn lại bạn phải tính bằng tay, vì cách tính công của các Cty đều khác nhau
Trên diễn đàn này có rất nhiều topic loại này rồi, chẳng nhẽ không có cái nào bạn vận dụng được.

Chúc Bạn và gia đình cuối tuần vui vẻ.
 

File đính kèm

Lần chỉnh sửa cuối:
Còn đây sắp đạt 30% tính kiên nhẫn rồi nè:

PHP:
Sub SangCong()
 Dim Rws As Long, J As Long, Col As Integer, Ngay As Integer, Dg As Integer
 Dim Rng As Range, sRng As Range
 Dim Ma As String, MyAdd As String
 
 Rws = [C9999].End(xlUp).Row
 With Sheet1
    Rws = 9 + .[C9999].End(xlUp).Row
    Set Rng = .Range("C6").Resize(Rws) 
    For J = 11 To Rws Step 2
        Ma = Cells(J, "C").Value:           If Ma = "" Then Exit For
        Cells(J, "E").Resize(2, 31).Value = Space(0)    'Xóa Du Liêu Da Có  '
        Set sRng = Rng.Find(Ma, , xlFormulas, xlWhole)
        If Not sRng Is Nothing Then
            Dg = sRng.Row
            For Col = 5 To 66 Step 2
                Ngay = Day(.Cells(4, Col))
                If So(.Cells(Dg, Col).Value) And So(.Cells(Dg, Col + 1).Value) Then 'Làm Viêc Sáng  '
                    If So(.Cells(1 + Dg, Col).Value) And So(.Cells(1 + Dg, Col + 1).Value) Then
                        Cells(J, "D").Offset(, Ngay).Value = "X"                    '& Làm Buôi Chiêu   '
                    ElseIf (.Cells(1 + Dg, Col).Value = "CT" And .Cells(1 + Dg, Col + 1).Value = "CT") Then
                        Cells(J, "D").Offset(, Ngay).Value = "X/2"
                        Cells(1 + J, "D").Offset(, Ngay).Value = "CT"               'Chiêu Di Công Tác '
                    ElseIf (.Cells(1 + Dg, Col).Value = "x" And .Cells(1 + Dg, Col + 1).Value = "x") Then
                        Cells(J, "D").Offset(, Ngay).Value = "X/2"
                   
                    End If
               
                ElseIf (.Cells(Dg, Col).Value = "NP" And .Cells(Dg, Col + 1).Value = "NP") Then 'Nghi Phép Sáng  '
                    If (.Cells(1 + Dg, Col).Value = "NP" And .Cells(1 + Dg, Col + 1).Value = "NP") Then
                        Cells(J, "D").Offset(, Ngay).Value = "NP"
                   
                    ElseIf .Cells(1 + Dg, Col).Value = "PO" And .Cells(1 + Dg, Col + 1).Value = "PO" Then
                        Cells(J, "D").Offset(, Ngay).Value = "NP"
                        Cells(1 + J, "D").Offset(, Ngay).Value = "PO"
                   
                   
                    End If

                ElseIf (.Cells(Dg, Col).Value = "CT" And .Cells(Dg, Col + 1).Value = "CT") Then 'Công Tác Sáng   '
                    If (.Cells(1 + Dg, Col).Value = "CT" And .Cells(1 + Dg, Col + 1).Value = "CT") Then
                        Cells(J, "D").Offset(, Ngay).Value = "CT"
                    ElseIf So(.Cells(1 + Dg, Col).Value) And So(.Cells(1 + Dg, Col + 1).Value) Then
                        Cells(J, "D").Offset(, Ngay).Value = "CT"
                        Cells(1 + J, "D").Offset(, Ngay).Value = "X/2"
                   
                    End If
                   
                End If
            Next Col
        End If
    Next J
 End With
End Sub
Mã:
Function So(Value_ As Variant) As Boolean
 If IsNumeric(Value_) Then
    So = True
 Else
    So = False
End If
End Function
 
Còn đây sắp đạt 30% tính kiên nhẫn rồi nè:

PHP:
Sub SangCong()
 Dim Rws As Long, J As Long, Col As Integer, Ngay As Integer, Dg As Integer
 Dim Rng As Range, sRng As Range
 Dim Ma As String, MyAdd As String
 
 Rws = [C9999].End(xlUp).Row
 With Sheet1
    Rws = 9 + .[C9999].End(xlUp).Row
    Set Rng = .Range("C6").Resize(Rws)
    For J = 11 To Rws Step 2
        Ma = Cells(J, "C").Value:           If Ma = "" Then Exit For
        Cells(J, "E").Resize(2, 31).Value = Space(0)    'Xóa Du Liêu Da Có  '
        Set sRng = Rng.Find(Ma, , xlFormulas, xlWhole)
        If Not sRng Is Nothing Then
            Dg = sRng.Row
            For Col = 5 To 66 Step 2
                Ngay = Day(.Cells(4, Col))
                If So(.Cells(Dg, Col).Value) And So(.Cells(Dg, Col + 1).Value) Then 'Làm Viêc Sáng  '
                    If So(.Cells(1 + Dg, Col).Value) And So(.Cells(1 + Dg, Col + 1).Value) Then
                        Cells(J, "D").Offset(, Ngay).Value = "X"                    '& Làm Buôi Chiêu   '
                    ElseIf (.Cells(1 + Dg, Col).Value = "CT" And .Cells(1 + Dg, Col + 1).Value = "CT") Then
                        Cells(J, "D").Offset(, Ngay).Value = "X/2"
                        Cells(1 + J, "D").Offset(, Ngay).Value = "CT"               'Chiêu Di Công Tác '
                    ElseIf (.Cells(1 + Dg, Col).Value = "x" And .Cells(1 + Dg, Col + 1).Value = "x") Then
                        Cells(J, "D").Offset(, Ngay).Value = "X/2"
                  
                    End If
              
                ElseIf (.Cells(Dg, Col).Value = "NP" And .Cells(Dg, Col + 1).Value = "NP") Then 'Nghi Phép Sáng  '
                    If (.Cells(1 + Dg, Col).Value = "NP" And .Cells(1 + Dg, Col + 1).Value = "NP") Then
                        Cells(J, "D").Offset(, Ngay).Value = "NP"
                  
                    ElseIf .Cells(1 + Dg, Col).Value = "PO" And .Cells(1 + Dg, Col + 1).Value = "PO" Then
                        Cells(J, "D").Offset(, Ngay).Value = "NP"
                        Cells(1 + J, "D").Offset(, Ngay).Value = "PO"
                  
                  
                    End If

                ElseIf (.Cells(Dg, Col).Value = "CT" And .Cells(Dg, Col + 1).Value = "CT") Then 'Công Tác Sáng   '
                    If (.Cells(1 + Dg, Col).Value = "CT" And .Cells(1 + Dg, Col + 1).Value = "CT") Then
                        Cells(J, "D").Offset(, Ngay).Value = "CT"
                    ElseIf So(.Cells(1 + Dg, Col).Value) And So(.Cells(1 + Dg, Col + 1).Value) Then
                        Cells(J, "D").Offset(, Ngay).Value = "CT"
                        Cells(1 + J, "D").Offset(, Ngay).Value = "X/2"
                  
                    End If
                  
                End If
            Next Col
        End If
    Next J
 End With
End Sub
Mã:
Function So(Value_ As Variant) As Boolean
 If IsNumeric(Value_) Then
    So = True
 Else
    So = False
End If
End Function
Admiration!!! Bái phục bái phục...
 
Web KT

Bài viết mới nhất

Back
Top Bottom