GIÚP ĐỠ VỀ BẢNG CÔNG NHÂN VIÊN (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

lovestorn1981

Thành viên mới
Tham gia
19/12/09
Bài viết
41
Được thích
1
Mình có 1 bảng chấm công xuất ra từ máy chấm công vân tay, bi giờ mình muốn dùng công thức để chấm công của các nhân viên theo MÃ NHÂN VIÊN vào sheet BẢNG CÔNG THÁNG.
Mong các cao thủ hỗ trợ, Mình xin cảm ơn !
 

File đính kèm

Mình có 1 bảng chấm công xuất ra từ máy chấm công vân tay, bi giờ mình muốn dùng công thức để chấm công của các nhân viên theo MÃ NHÂN VIÊN vào sheet BẢNG CÔNG THÁNG.
Mong các cao thủ hỗ trợ, Mình xin cảm ơn !
Viết anh chị và xưng tôi là được rồi. Cao thủ với cao nhân nghe y như kiếm hiệp, mệt.
 
Bài này khó mà thực hiện bằng công thức;
Theo mình nên thực hiện bỡi VBA;
Bước đầu bạn lấy trang tính mới, gán nó cái tên 'GPE' & chạy macro này

PHP:
Sub ThuTachDuLieu()
 Dim Rng As Range, sRng As Range
 Dim MyAdd As String, StrC As String, MNV As String, TNV As String, BF As String
 Dim Rws As Long, W As Integer, J As Long, Z As Byte, VTr As Byte
 
 With Sheets("GPE")
    MNV = .[I1].Value:                          TNV = .[k1].Value
    BF = .[M1].Value
 End With
 
 With Sheets("MCC")
    Rws = .[A65500].End(xlUp).Row
    Set Rng = .[A5].Resize(Rws)
    ReDim Arr(1 To Rws, 1 To 5) As String
    For J = 5 To Rws
        If InStr(.Cells(J, "A").Value, ":") Then
            StrC = .Cells(J, "A").Value
            StrC = Replace(Replace(Replace(StrC, BF, "@"), MNV, Space(3)), TNV, "@")
            W = W + 1:                          Arr(W, 1) = W
            For Z = 3 To 4
                VTr = InStr(StrC, "@")
                If VTr Then
                    If Z = 3 Then
                        Arr(W, 2) = Mid(StrC, VTr - 7, 6)
                        StrC = Mid(StrC, VTr + 1, Len(StrC))
                    ElseIf Z = 4 Then
                        Arr(W, 3) = Left(StrC, VTr - 1)
                        Arr(W, 4) = Mid$(StrC, VTr + 1, Len(StrC))
                    End If
                End If
                If J < 72 Then MsgBox StrC
            Next Z
        End If
    Next J
 End With
 Sheets("GPE").[A2].Resize(W, 4).Value = Arr()
End Sub

Ta sẽ có bảng sau (do macro đưa lại):

STT Họ & Tên Đ Vị
100079Đặng Thị Thanh HuyềnKinh doanh
200221Nguyễn Hà Đức ThịnhCông nghệ thông tin
300041Đinh Ngọc QuangTổ chức hành chính
400040Hoàng Văn ThắngTổ chức hành chính
500040Nguyễn Quí CươngCông nghệ thông tin
600041Lê Phương ThanhKinh doanh
700056Trương Trọng ThiệnTele Marketing
800053Phạm Công ĐứcTele Marketing
900054Nguyễn Thị OanhTele Marketing
1000057Bùi Cẩm TúTele Marketing
1100058Tống Linh ChiTele Marketing
1200059Nguyễn Phương ThảoTele Marketing
1300060Nguyễn Thị Mai AnhTele Marketing
1400061Nguyễn Diệu LinhTele Marketing
1500062Trần Thị MếnTele Marketing
1600064Ngô Ngọc ThúyTele Marketing
1700008Dương Đức LongCông nghệ thông tin
1800112Lê Thu ThủyTele Marketing
1900113Hoàng Thu TrangKinh doanh
2000114Nguyễn Thị Bích HạnhKinh doanh
2100115Lương Trà MyKinh doanh
2200116Nguyễn Phương LanTele Marketing
2300118Bùi Văn VươngKinh doanh
. . . .
21700224Bùi Kim KhảiCông nghệ thông tin
21800228Đỗ Thanh ThúyTổ chức hành chính
21900229Nguyễn Thị Hiền LươngMarketing
22000227Dương Thị Mai HươngTele Marketing
22100238Dương Thị KhaKinh doanh
22200254Nguyễn Thùy LinhKinh doanh
22300236Lê Thanh HoaTele Marketing
22400232Nguyễn Thúy HằngKinh doanh
22500235Hà Thị Lan AnhKinh doanh
22600234Trần Thị Hải YếnKinh doanh
22700233Lê Hải YếnKinh doanh
22800237Đặng Ánh NgọcTele Marketing
 
Còn đây là macro & phụ trợ cho nó là hàm người dùng để chuyển dữ liệu chấm công máy của bạn về chuần như trích ở bảng dưới:

PHP:
Sub TaoBangChamCongMay()
 Dim Rws As Long, J As Long, W As Long
 Dim Arr()
 Dim MNV As String, TNV As String, BF As String, sTrC As String

 Sheets("MCC").Select
 Rws = [A65500].End(xlUp).Row
 ReDim Akq(1 To Rws, 1 To 6)
 Arr() = [A6].Resize(Rws, 9).Value
 For J = 1 To UBound(Arr())
    If Left(Arr(J, 1), 13) = "Mã nhân viên:" Then
        MNV = Trim(Mid(Arr(J, 1), 14, 6))
        sTrC = Mid(Arr(J, 1), 15, Len(Arr(J, 1)))
        TNV = Tach_2(sTrC, "T")
        BF = Tach_2(sTrC, "BF")
    End If
    If IsDate(Arr(J, 1)) And Arr(J, 9) > 0 Then
        W = W + 1:                  Akq(W, 2) = Arr(J, 1)
        Akq(W, 3) = "'" & MNV:      Akq(W, 4) = TNV
        Akq(W, 5) = BF:             Akq(W, 1) = W
        Akq(W, 6) = Format(Arr(J, 9), "###.##0")
        
    End If
 Next J
 If W Then
    Sheets("CCM").[A2].Resize(Rws, 6).Value = ""
    Sheets("CCM").[A2].Resize(W, 6).Value = Akq()
 End If
End Sub
Mã:
Function Tach_2(sTrC As String, XXX As String) As String
 Dim VTr1 As Integer, VTr2 As Integer, VTr3 As Integer
 
 VTr1 = InStr(sTrC, ":"):       VTr2 = InStr(VTr1, sTrC, Space(2))
 VTr3 = InStr(VTr2, sTrC, ":")
 If XXX = "T" Then
    Tach_2 = Mid$(sTrC, VTr1 + 1, VTr2 - VTr1)
 ElseIf XXX = "BF" Then
    Tach_2 = Trim(Mid$(sTrC, VTr3 + 1, Len(sTrC)))
 End If
End Function

STTNgàyMã NVHọ & TênĐơn vịCông
1​
6/1/2021​
00079Đặng Thị Thanh HuyềnKinh doanh
1​
2​
6/3/2021​
00079Đặng Thị Thanh HuyềnKinh doanh
1​
3​
6/5/2021​
00079Đặng Thị Thanh HuyềnKinh doanh
1​
4​
6/7/2021​
00079Đặng Thị Thanh HuyềnKinh doanh
1​
5​
6/9/2021​
00079Đặng Thị Thanh HuyềnKinh doanh
0.958​
6​
6/11/2021​
00079Đặng Thị Thanh HuyềnKinh doanh
1​
7​
6/15/2021​
00079Đặng Thị Thanh HuyềnKinh doanh
1​
8​
6/17/2021​
00079Đặng Thị Thanh HuyềnKinh doanh
0.988​
9​
6/19/2021​
00079Đặng Thị Thanh HuyềnKinh doanh
0.869​
10​
6/20/2021​
00079Đặng Thị Thanh HuyềnKinh doanh
0.331​
11​
6/23/2021​
00079Đặng Thị Thanh HuyềnKinh doanh
1​
12​
6/25/2021​
00079Đặng Thị Thanh HuyềnKinh doanh
1​
13​
6/26/2021​
00079Đặng Thị Thanh HuyềnKinh doanh
0.321​
14​
6/27/2021​
00079Đặng Thị Thanh HuyềnKinh doanh
1​
15​
6/29/2021​
00079Đặng Thị Thanh HuyềnKinh doanh
0.994​
16​
6/2/2021​
00221Nguyễn Hà Đức ThịnhCông nghệ thông tin
0.438​
17​
6/3/2021​
00221Nguyễn Hà Đức ThịnhCông nghệ thông tin
0.438​
18​
6/4/2021​
00221Nguyễn Hà Đức ThịnhCông nghệ thông tin
0.438​
. . . . .
1984​
6/26/2021​
00233Lê Hải YếnKinh doanh
0.3​
1985​
6/29/2021​
00233Lê Hải YếnKinh doanh
0.831​
1986​
6/1/2021​
00237Đặng Ánh NgọcTele Marketing
1​
1987​
6/2/2021​
00237Đặng Ánh NgọcTele Marketing
1​
1988​
6/3/2021​
00237Đặng Ánh NgọcTele Marketing
1​
1989​
6/4/2021​
00237Đặng Ánh NgọcTele Marketing
0.925​
. . . . .
2006​
6/22/2021​
00237Đặng Ánh NgọcTele Marketing
1​
2007​
6/23/2021​
00237Đặng Ánh NgọcTele Marketing
1​
2008​
6/24/2021​
00237Đặng Ánh NgọcTele Marketing
0.571​
2009​
6/25/2021​
00237Đặng Ánh NgọcTele Marketing
0.888​
2010​
6/27/2021​
00237Đặng Ánh NgọcTele Marketing
1​
2011​
6/29/2021​
00237Đặng Ánh NgọcTele Marketing
1​
2012​
6/30/2021​
00237Đặng Ánh NgọcTele Marketing
0.998​
 
Mình có 1 bảng chấm công xuất ra từ máy chấm công vân tay, bi giờ mình muốn dùng công thức để chấm công của các nhân viên theo MÃ NHÂN VIÊN vào sheet BẢNG CÔNG THÁNG.
Mong các cao thủ hỗ trợ, Mình xin cảm ơn !
Đây là dữ liệu từ MCC Mitaco đúng k bạn. mình nhìn form giống lắm. Nếu đúng thì trên phần mềm có mục xuất BCC theo cả tháng rồi cần j phải chấm công từ bảng chi tiết này ạ
1625897831981.png
 
Lần chỉnh sửa cuối:
Web KT

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

Back
Top Bottom