Tính số nhân công

Liên hệ QC

Bích Tỷ

Thành viên chính thức
Tham gia
17/5/21
Bài viết
85
Được thích
19
Em xin chào anh/chị,
Em có một file tính toán số lượng nhân công, em làm thủ công thì lâu quá. em nhờ anh chị hỗ trợ giúp em với. em xin cảm ơn.
Yêu cầu: Kết quả trả về từ sheet "CHAT" đến sheet "MAY-THANHHINH"
Do em mô tả hơi dài nên yêu cầu em để trong file ạ
 

File đính kèm

  • Tính toán nhân công.xlsb
    257.6 KB · Đọc: 34
Lần chỉnh sửa cuối:
Giải pháp
Chọn 1 trong 3 tiêu chí tại [O2] của trang 'CID' & kiểm theo kết quả giúp xem sao nha:
Chọn 1 trong 3 tiêu chí tại [O2] của trang 'CID' & kiểm theo kết quả giúp xem sao nha:
Chào anh, em còn 1 sheet May và Thành hình chưa xử lý được ạ.
- Sau khi lấy được: Chuyen, MaGiay, TenGiay và SoLuong thì kế tiếp là cần lấy DOI/H và SoNguoi
+ Cột DOI/H: dựa vào chuyền và tên giày để tìm số DOI/H từ sheet TC2(doi/h).
+ Cột SoNguoi: dựa vào tên giay và cột DOI/H để tìm số ra số người ở sheet TIEUCHUAN (*)'

(*) Có 2 cột may và thành hình có mỗi DOI/H, cột may thì dành cho sheet May, thành hinh dành cho sheet thanhhinh
=> nếu sối DOI/H không tồn tại ở sheet TIEUCHUAN thì lấy số người ở cột kế tiếp (Số đôi/h lớn hơn gần nhất với số DOI/H không tồn tại). Em cảm ơn
 

File đính kèm

  • NhanCong.xlsb
    296.3 KB · Đọc: 5
Upvote 0
Chào anh, em còn 1 sheet May và . . . . . .
- Sau khi lấy được: Chuyen, MaGiay, TenGiay và SoLuong thì kế tiếp là cần lấy DOI/H và . . .
Thì cho macro này chạy & kiểm tra số liệu:
PHP:
Sub TinhDoiGio()
 Dim Cot As Integer, Dg As Integer, Rws As Long, Col As Integer
 Dim Sh As Worksheet, Rng As Range, sRng As Range
 Dim Chuyen As String, Ten As String
 
 Set Sh = Sheet3
 Rws = Sh.[B2].CurrentRegion.Rows.Count
 Set Rng = Sh.[B1].Resize(Rws)
 Sheets("May").Select
 Application.ScreenUpdating = False
 For Cot = 1 To 60 Step 6
    Rws = Cells(99, Cot).End(xlUp).Row
    For Dg = 5 To Rws
        Chuyen = Cells(Dg, Cot).Value
        Col = Asc(Chuyen) - 64
        Ten = Cells(Dg, 2 + Cot).Value
        Set sRng = Rng.Find(Ten, , xlFormulas, xlWhole)
        If sRng Is Nothing Then
            Cells(Dg, 2 + Cot).Interior.ColorIndex = 38
        Else
            Cells(Dg, 4 + Cot).Value = sRng.Offset(, Col).Value
        End If
    Next Dg
 Next Cot
Application.ScreenUpdating = True
End Sub
 
Upvote 0
+ Cột SoNguoi (Cột F): dựa vào tên giay và cột DOI/H để tìm số ra số người ở sheet TIEUCHUAN (*)'

(*) Có 2 cột may và thành hình có mỗi DOI/H, cột may thì dành cho sheet May, thành hinh dành cho sheet thanhhinh
=> nếu sối DOI/H không tồn tại ở sheet TIEUCHUAN thì lấy số người ở cột kế tiếp (Số đôi/h lớn hơn gần nhất với số DOI/H không tồn tại). Em cảm ơn
Chào anh SA_DQ cột DOI/H ra kết quả đúng rồi anh, còn cột số người thì xử ly sao anh. em cảm ơn
 
Upvote 0
Thử cái ni & cho biết rùa cỡ nào!
PHP:
Sub TinhNhanLuc()
 Dim Cot As Integer, Rws As Integer, Dg As Integer, DoiG As Integer, Col As Integer
 Dim J As Integer
 Dim Arr(), Rng As Range, sRng As Range
 Dim Ten As String
 
 With Sheets("TieuChuan")
    Cot = .[BB2].End(xlToRight).Column
    Arr() = .Range(.[BB2], .Cells(2, Cot)).Resize(4).Value
    Rws = .[b5].CurrentRegion.Rows.Count
    Set Rng = .[b5].Resize(Rws)
 End With
 Application.ScreenUpdating = False
 Sheets("May").Select
 For Cot = 3 To 57 Step 6   'Duyêt Theo Côt '
    Rws = Cells(99, Cot).End(xlUp).Row  'Dòng Cuôi DL Các Ngày  '
    For Dg = 5 To Rws   'Duyêt Các Dòng Theo Tùng Ngày  '
        Ten = Cells(Dg, Cot).Value
        DoiG = Cells(Dg, 2 + Cot).Value
        Cells(Dg, 3 + Cot).Value = Space(0)
        For J = 1 To UBound(Arr(), 2)
            If Arr(1, J) = DoiG Then
                Col = Arr(4, J):        Exit For
            End If
        Next J
        Set sRng = Rng.Find(Ten, , xlFormulas, xlWhole)
        If Not sRng Is Nothing Then
            Cells(Dg, 3 + Cot).Value = Sheets("TieuChuan").Cells(sRng.Row, Col).Value
        End If
    Next Dg
 Next Cot
 Application.ScreenUpdating = True
 MsgBox "Tính Xong Rôi", , "GPE.COM Xin Chào!"
End Sub
 
Upvote 0
Thử cái ni & cho biết rùa cỡ nào!
PHP:
Sub TinhNhanLuc()
 Dim Cot As Integer, Rws As Integer, Dg As Integer, DoiG As Integer, Col As Integer
 Dim J As Integer
 Dim Arr(), Rng As Range, sRng As Range
 Dim Ten As String
 
 With Sheets("TieuChuan")
    Cot = .[BB2].End(xlToRight).Column
    Arr() = .Range(.[BB2], .Cells(2, Cot)).Resize(4).Value
    Rws = .[b5].CurrentRegion.Rows.Count
    Set Rng = .[b5].Resize(Rws)
 End With
 Application.ScreenUpdating = False
 Sheets("May").Select
 For Cot = 3 To 57 Step 6   'Duyêt Theo Côt '
    Rws = Cells(99, Cot).End(xlUp).Row  'Dòng Cuôi DL Các Ngày  '
    For Dg = 5 To Rws   'Duyêt Các Dòng Theo Tùng Ngày  '
        Ten = Cells(Dg, Cot).Value
        DoiG = Cells(Dg, 2 + Cot).Value
        Cells(Dg, 3 + Cot).Value = Space(0)
        For J = 1 To UBound(Arr(), 2)
            If Arr(1, J) = DoiG Then
                Col = Arr(4, J):        Exit For
            End If
        Next J
        Set sRng = Rng.Find(Ten, , xlFormulas, xlWhole)
        If Not sRng Is Nothing Then
            Cells(Dg, 3 + Cot).Value = Sheets("TieuChuan").Cells(sRng.Row, Col).Value
        End If
    Next Dg
 Next Cot
 Application.ScreenUpdating = True
 MsgBox "Tính Xong Rôi", , "GPE.COM Xin Chào!"
End Sub
Cảm ơn anh rất nhiều. em có chỉnh sửa lại một số chỗ trong code và em đã áp dụng để hoàn thành file dữ liệu.
 
Lần chỉnh sửa cuối:
Upvote 0
PHP:
Sub TinhDoiGio()
 Dim Cot As Integer, Dg As Integer, Rws As Long, Col As Integer
 Dim Sh As Worksheet, Rng As Range, sRng As Range
 Dim Chuyen As String, Ten As String
 
 Set Sh = Sheet3
 Rws = Sh.[B2].CurrentRegion.Rows.Count
 Set Rng = Sh.[B1].Resize(Rws)
 Sheets("May").Select
 Application.ScreenUpdating = False
 For Cot = 1 To 60 Step 6
    Rws = Cells(99, Cot).End(xlUp).Row
    For Dg = 5 To Rws
        Chuyen = Cells(Dg, Cot).Value
        Col = Asc(Chuyen) - 64
        Ten = Cells(Dg, 2 + Cot).Value
        Set sRng = Rng.Find(Ten, , xlFormulas, xlWhole)
        If sRng Is Nothing Then
            Cells(Dg, 2 + Cot).Interior.ColorIndex = 38
        Else
            Cells(Dg, 4 + Cot).Value = sRng.Offset(, Col).Value
        End If
    Next Dg
 Next Cot
Application.ScreenUpdating = True
End Sub
Dạ chào anh @SA_DQ , sau một thời gian sử dụng em có thay đổi tên CHUYỀN thì kết quả trả về hoàn toàn sai. phiền anh xem giúp em, em cảm ơn.
-Dữ liệu bảng tiêu chuẩn:
1653624816527.png
- kết quả sheet MAY:
1653624856849.png
 

File đính kèm

  • NhanCong.xlsb
    301.5 KB · Đọc: 6
Lần chỉnh sửa cuối:
Upvote 0
Upvote 0
Web KT

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

Back
Top Bottom