Xin giúp lấy dữ liệu từ bảng chấm công bằng vân tay

Liên hệ QC

hoangruazbin

Thành viên mới
Tham gia
27/6/19
Bài viết
32
Được thích
3
Nhờ các bác giúp em lấy dữ liệu theo dõi chấm công bằng vân tay đưa vào báo cáo như file đính kèm.
Cảm ơn các bác!
 

File đính kèm

  • Thang 6 - Copy.xlsx
    29.5 KB · Đọc: 19
Nhờ các bác giúp em lấy dữ liệu theo dõi chấm công bằng vân tay đưa vào báo cáo như file đính kèm.
Cảm ơn các bác!
Bạn thử code này nhé.
Mã:
Sub loc_duLieu()
 Application.ScreenUpdating = False
    Dim arr, i As Long, a As Long, b As Long, lr As Long, dic As Object, data, dk As String, ngay As Long, j As Integer, vao As Boolean, ra As Boolean
    Set dic = CreateObject("scripting.dictionary")
        With Sheets("bao_cao")
             lr = .Range("B" & Rows.Count).End(xlUp).Row
             If lr > 6 Then .Range("E7:Ai" & lr).ClearContents
             arr = .Range("B5:Ai" & lr).Value
             For i = 3 To UBound(arr)
                 dk = arr(i, 1)
                 dic.Item(dk) = i
             Next i
             For i = 4 To UBound(arr, 2)
                 ngay = arr(1, i)
                 dic.Item(ngay) = i
             Next i
       End With
       With Sheets("dulieu")
            i = .Range("C" & Rows.Count).End(xlUp).Row
            data = .Range("A5:l" & i).Value
            For i = 1 To UBound(data)
                dk = data(i, 3)
                a = dic.Item(dk)
                If a Then
                   ngay = data(i, 1)
                   b = dic.Item(ngay)
                       If b Then
                          vao = False: ra = False
                          For j = 7 To 12
                              If data(i, j) <> Empty Then
                                 If Hour(data(i, j)) < 9 Then
                                    vao = True
                                 Else
                                    ra = True
                                 End If
                               End If
                         Next j
                         If vao = False And ra = False Then
                            arr(a, b) = "V"
                         ElseIf vao = True And ra = False Then
                            arr(a, b) = "TR"
                         ElseIf vao = False And ra = True Then
                            arr(a, b) = "TV"
                         Else
                            arr(a, b) = "D"
                         End If
                      End If
              End If
         Next i
  End With
  With Sheets("bao_cao")
       .Range("B5:Ai" & lr).Value = arr
  End With
  Application.ScreenUpdating = True
End Sub
 

File đính kèm

  • Thang 6 - Copy.xlsm
    37.6 KB · Đọc: 20
Upvote 0
Cảm ơn bạn @snow25 rất nhiều. Mình còn 1 số vấn đề đối với code bạn viết như sau:
+ Chưa lấy được thông tin những người vắng (do ngày vắng không ghi dữ liệu data);
+ Những người vào 1/2 ngày (sáng vào - trưa ra, Trưa vào chiều ra): Xác định giúp mình 1/2 ngày;
+ Những người chỉ có 1 vân tay bấm lúc ra: Code đang hiểu thiếu ra (do máy nhận vân tay ở cột vào)
+ Nếu được nhờ bạn viết thêm code cho Cột AK "Diễn giải" các ngày thiếu, vắng, đối với từng người giúp mình
(Các nội dung cần chỉnh sửa mình đã đánh dấu vàng theo file đính kèm)
Một lần nữa chân thành cảm ơn bạn @snow25
 

File đính kèm

  • Thang 6 - Copy.xlsm
    36.1 KB · Đọc: 15
Lần chỉnh sửa cuối:
Upvote 0
Web KT
Back
Top Bottom