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:
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 ạ
Chắc ai nhiệt tình thì code 1 vài code đây bạn muốn code cả file chắc phải đợi dài dài.Đến đọc hết nội dung các yêu cầu của bạn tôi còn không đọc hết.
 
Upvote 0
Chắc ai nhiệt tình thì code 1 vài code đây bạn muốn code cả file chắc phải đợi dài dài.Đến đọc hết nội dung các yêu cầu của bạn tôi còn không đọc hết.
dạ chào anh,
Anh có thể hỗ trợ em xử lý từng sheet không ạ. em cảm ơn
- 2 sheet CHAT và DEM tính giống nhau anh ạ. sheet IN thì thay đổi công thức ở cột C và D ạ, e có làm công thức trong file ạ.
 
Upvote 0
Bạn thử kiểm tra số liệu ngày 28 xem sao;
(Các bạn có thể xem file ở các bài của mình bên dưới & xin cảm ơn!)
$$$$@ :D $$$$@
 
Lần chỉnh sửa cuối:
Upvote 0
(1) Macro sự kiện trong file chỉ đang thực hiện 2 cột số liệu liền nhau (sau khi ta chọn 1 ngày cụ thể nào đó)
Còn macro sau sẽ cho ta tính năng tạo báo cáo số liệu của 4 ngày liên tiếp
PHP:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
 Dim Dat As Date, Col As Integer, Rws As Long, J As Long, rMax As Integer
 Dim W1 As Integer, W5 As Integer, W9 As Integer, W13 As Integer
 Dim Sh As Worksheet, Cls As Range, Rng As Range, Arr()
 
 On Error Resume Next
 If Not Intersect(Target, [A2]) Is Nothing Then
    Set Sh = ThisWorkbook.Worksheets("KeHoach")
    Rws = Sh.[C2].CurrentRegion.Rows.Count
    [A30:AN99].ClearContents
'Tìm Ngày Bát Dàu:      '
    For Each Cls In Sh.Range(Sh.[h1], Sh.[h1].End(xlToRight))
        If Cls.Value = Target.Value Then
            Col = Cls.Column:                Arr() = Sh.[A2].Resize(Rws, 3 + Col).Value
            Exit For
        End If
    Next Cls
    ReDim aKQ1(1 To 99, 1 To 2):            ReDim aKQ5(1 To 99, 1 To 2)
    ReDim aKQ9(1 To 99, 1 To 2):            ReDim aKQ13(1 To 99, 1 To 2)
    Rows("5:99").Hidden = False:            [A5].Resize(95, 16).ClearContents
   For J = 1 To UBound(Arr())
1        If Arr(J, Col) <> Space(0) Then
            W1 = W1 + 1:                    aKQ1(W1, 1) = Arr(J, 3)
            aKQ1(W1, 2) = Arr(J, Col)
            If W1 > rMax Then rMax = W1
        End If
2        If (Arr(J, 1 + Col)) <> Space(0) Then
            W5 = W5 + 1:                    aKQ5(W5, 1) = Arr(J, 3)
            aKQ5(W5, 2) = Arr(J, 1 + Col)
            If W5 > rMax Then rMax = W5
        End If
3        If (Arr(J, 2 + Col)) <> Space(0) Then
            W9 = W9 + 1:                    aKQ9(W9, 1) = Arr(J, 3)
            aKQ9(W9, 2) = Arr(J, 2 + Col)
            If W9 > rMax Then rMax = W9
        End If
4        If Arr(J, 3 + Col) <> Space(0) Then
            W13 = W13 + 1:                    aKQ13(W13, 1) = Arr(J, 3)
            aKQ13(W9, 2) = Arr(J, 3 + Col)
            If W13 > rMax Then rMax = W13
        End If
    Next J
  
    [A5].Resize(W1, 2).Value = aKQ1():     [e5].Resize(W5, 2).Value = aKQ5()
    [I5].Resize(W9, 2).Value = aKQ9():      [M5].Resize(W13, 2).Value = aKQ13()
    Rows(rMax + 1 & ":99").Hidden = True
  
    MsgBox "Xong Rôi!", , "Xin Chào " & rMax
 End If
End Sub
Bạn thử chép đè toàn bộ macro cũ & cho chạy thử & kiểm tra tiếp

(2)
dạ chào anh,
Anh có thể hỗ trợ em xử lý từng sheet không ạ. em cảm ơn
- 2 sheet CHAT và DEM tính giống nhau anh ạ. sheet IN thì thay đổi công thức ở cột C và D ạ, e có làm công thức trong file ạ.
Trang 'Chat' & 'Dem' có vẻ như giống nhau & có thể tạo ra chúng từ 1 cách thức
Nhưng cũng có thể từ trang 'Chat' ta tạo ra 'Dem' (chứ không cần từ trang dữ liệu gốc.).

(3) Mỗi ngày bạn cần 4 cột dữ liệu, vậy 2 cột cuối (của mỗi ngày) bạn đã lấy từ đâu?
 
Upvote 0
(3) Mỗi ngày bạn cần 4 cột dữ liệu, vậy 2 cột cuối (của mỗi ngày) bạn đã lấy từ đâu?
=> Cột số lượng thì tính tổng theo TEN GIAY (bỏ trùng lập) á anh
2 cột cuối sẽ tính như thế này anh:
cột 8h: Số lượng/6(ô B2)/ô D2/8/ trung bình tiêu chuẩn(*)
cột 9.5h: Số lượng/6(ô B2)/ô D2/9.5/ trung bình tiêu chuẩn(**)
(*) đối với sheet CHAT thì dựa vào TEN GIAY để tìm tiêu chuẩn ở sheet TIEUCHUAN (Cột G)
(**)đối với sheet DEM thì dựa vào TEN GIAY để tìm tiêu chuẩn ở sheet TIEUCHUAN (Cột BA)
- Đối với sheet IN lấy dữ liệu tương tự như 2 sheet trên nhưng cột 8h và 9.5 sẽ tính là:
cột 8h: Số lượng/6(ô B2)/ô D2/(8* trung bình tiêu chuẩn) (***)
cột 9.5h: Số lượng/6(ô B2)/ô D2/(9.5* trung bình tiêu chuẩn) (***)
(***) dựa vào TEN GIAY để tìm tiêu chuẩn ở sheet TIEUCHUAN (Cột Z)
- anh có thể tạo dữ liệu 10 ngày liên tiếp giúp em nha. em cảm ơn anh.
 
Lần chỉnh sửa cuối:
Upvote 0
- anh có thể tạo dữ liệu 10 ngày liên tiếp giúp em nha. em cảm ơn anh.
Lý do sao phải là mươi ngày mà là 5 ngày hay ít hơn
Vì lẽ ta có thể chọn ngày bắt đầu nào đó trong Validation để macro cho ra kết quả chỉ 4 ngày liên tiếp (kể từ ngày được chọn); Nếu cần xem tiếp thì ta bấm chọn tiếp 4 ngày nữa (không được sao?)
 
Upvote 0
Lý do sao phải là mươi ngày mà là 5 ngày hay ít hơn
Vì lẽ ta có thể chọn ngày bắt đầu nào đó trong Validation để macro cho ra kết quả chỉ 4 ngày liên tiếp (kể từ ngày được chọn); Nếu cần xem tiếp thì ta bấm chọn tiếp 4 ngày nữa (không được sao?)
Dạ, lý do là vì 10 ngày tương ứng 10 tuần (hơn 2 tháng) thì phía bộ phận sản xuất cần sắp xếp số người phù hợp (dự trù) cho cho những tháng kế tiếp á anh.
- Cứ 2 tuần là bảng kế hoạch sẽ cập nhật 1 lần nên sản xuất cần phải làm dự trù 2 tháng để có thể đào tạo nhân công.
 
Upvote 0
Macro sự kiện cho mươi ngày của bạn đây, Kiểm tất cả xem sao(?)
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
 Dim Col As Integer, Rws As Long, J As Long, rMax As Integer
 Dim W1 As Integer, W5 As Integer, W9 As Integer, W7 As Integer, W0 As Integer
 Dim W3 As Integer, W4 As Integer, W6 As Integer, W8 As Integer, W2 As Integer
 Dim Sh As Worksheet, Cls As Range, Rng As Range, Arr()
 Const B2_ As Integer = 6:                      Const D2_ As Double = 1.2
' On Error Resume Next  '
 If Not Intersect(Target, [A2]) Is Nothing Then
    Set Sh = ThisWorkbook.Worksheets("KeHoach")
    Rws = Sh.[C2].CurrentRegion.Rows.Count
    [A30:AN99].ClearContents
'Tìm Ngày Bát Dàu:      '
    For Each Cls In Sh.Range(Sh.[h1], Sh.[h1].End(xlToRight))
        If Cls.Value = Target.Value Then
            Col = Cls.Column:                Arr() = Sh.[A2].Resize(Rws, 9 + Col).Value
            Exit For
        End If
    Next Cls
    ReDim aKQ0(1 To 99, 1 To 3):            ReDim aKQ1(1 To 99, 1 To 2)
    ReDim aKQ2(1 To 99, 1 To 2):            ReDim aKQ3(1 To 99, 1 To 2)
    ReDim aKQ4(1 To 99, 1 To 2):            ReDim aKQ5(1 To 99, 1 To 2)
    ReDim aKQ6(1 To 99, 1 To 2):            ReDim aKQ7(1 To 99, 1 To 2)
    ReDim aKQ9(1 To 99, 1 To 2):            ReDim aKQ8(1 To 99, 1 To 2)
    ReDim aDg(1 To 10, 1 To 1) As Integer
    
    Rows("5:99").Hidden = False:            [A5].Resize(95, 40).ClearContents
    Application.ScreenUpdating = False
   For J = 1 To UBound(Arr())
1        If Arr(J, Col) <> Space(0) Then
            aDg(1, 1) = aDg(1, 1) + 1:      aKQ0(aDg(1, 1), 1) = Arr(J, 3)
            aKQ0(aDg(1, 1), 2) = Arr(J, Col)
            aKQ0(aDg(1, 1), 3) = Arr(J, Col) / B2_ / D2_ / 8
        End If
2        If (Arr(J, 1 + Col)) <> Space(0) Then
            aDg(2, 1) = aDg(2, 1) + 1
            aKQ1(aDg(2, 1), 1) = Arr(J, 3)
            aKQ1(aDg(2, 1), 2) = Arr(J, 1 + Col)
        End If
3        If (Arr(J, 2 + Col)) <> Space(0) Then
            aDg(3, 1) = aDg(3, 1) + 1:                  aKQ2(aDg(3, 1), 1) = Arr(J, 3)
            aKQ2(aDg(3, 1), 2) = Arr(J, 2 + Col)
        End If
4        If Arr(J, 3 + Col) <> Space(0) Then
            aDg(4, 1) = aDg(4, 1) + 1:                  aKQ3(aDg(4, 1), 1) = Arr(J, 3)
            aKQ3(aDg(4, 1), 2) = Arr(J, 3 + Col)
        End If
5        If Arr(J, 4 + Col) <> Space(0) Then
            aDg(5, 1) = aDg(5, 1) + 1:                  aKQ4(aDg(5, 1), 1) = Arr(J, 3)
            aKQ4(aDg(5, 1), 2) = Arr(J, 4 + Col)
        End If
6        If Arr(J, 5 + Col) <> Space(0) Then
            aDg(6, 1) = aDg(6, 1) + 1:                  aKQ5(aDg(6, 1), 1) = Arr(J, 3)
            aKQ5(aDg(6, 1), 2) = Arr(J, 5 + Col)
        End If
7        If Arr(J, 6 + Col) <> Space(0) Then
            aDg(7, 1) = aDg(7, 1) + 1:                  aKQ6(aDg(7, 1), 1) = Arr(J, 3)
            aKQ6(aDg(7, 1), 2) = Arr(J, 6 + Col)
        End If
8        If Arr(J, 7 + Col) <> Space(0) Then
            aDg(8, 1) = aDg(8, 1) + 1:                  aKQ7(aDg(8, 1), 1) = Arr(J, 3)
            aKQ7(aDg(8, 1), 2) = Arr(J, 7 + Col)
        End If
9        If Arr(J, 8 + Col) <> Space(0) Then
            aDg(9, 1) = aDg(9, 1) + 1:                  aKQ8(aDg(9, 1), 1) = Arr(J, 3)
            aKQ8(aDg(9, 1), 2) = Arr(J, 8 + Col)
        End If
10       If Arr(J, 9 + Col) <> Space(0) Then
            aDg(10, 1) = aDg(10, 1) + 1:                  aKQ9(aDg(10, 1), 1) = Arr(J, 3)
            aKQ9(aDg(10, 1), 2) = Arr(J, 9 + Col)
        End If
    Next J
    [A5].Resize(aDg(1, 1), 3) = aKQ0():             [e5].Resize(aDg(2, 1), 2).Value = aKQ1()
    [I5].Resize(aDg(3, 1), 2).Value = aKQ2():       [M5].Resize(aDg(4, 1), 2).Value = aKQ3()
    [Q5].Resize(aDg(5, 1), 2).Value = aKQ4():       [U5].Resize(aDg(6, 1), 2).Value = aKQ5()
    [Y5].Resize(aDg(7, 1), 2).Value = aKQ6():       [AC5].Resize(aDg(8, 1), 2).Value = aKQ7()
    [AG5].Resize(aDg(9, 1), 2).Value = aKQ8():      [Ak5].Resize(aDg(10, 1), 2).Value = aKQ9()
'Xác Dinh Dòng Có Du Liêu   '
    For J = 1 To 10
        If aDg(J, 1) > rMax Then rMax = aDg(J, 1)
    Next J
    Rows(rMax + 6 & ":99").Hidden = True
    Application.ScreenUpdating = True
    MsgBox "Xong Rôi Nha!", , "GPE.COM Xin Chào! " & rMax
 End If
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Macro sự kiện cho mươi ngày của bạn đây, Kiểm tất cả xem sao(?)
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
 Dim Col As Integer, Rws As Long, J As Long, rMax As Integer
 Dim W1 As Integer, W5 As Integer, W9 As Integer, W7 As Integer, W0 As Integer
 Dim W3 As Integer, W4 As Integer, W6 As Integer, W8 As Integer, W2 As Integer
 Dim Sh As Worksheet, Cls As Range, Rng As Range, Arr()
 Const B2_ As Integer = 6:                      Const D2_ As Double = 1.2
' On Error Resume Next  '
 If Not Intersect(Target, [A2]) Is Nothing Then
    Set Sh = ThisWorkbook.Worksheets("KeHoach")
    Rws = Sh.[C2].CurrentRegion.Rows.Count
    [A30:AN99].ClearContents
'Tìm Ngày Bát Dàu:      '
    For Each Cls In Sh.Range(Sh.[h1], Sh.[h1].End(xlToRight))
        If Cls.Value = Target.Value Then
            Col = Cls.Column:                Arr() = Sh.[A2].Resize(Rws, 9 + Col).Value
            Exit For
        End If
    Next Cls
    ReDim aKQ0(1 To 99, 1 To 3):            ReDim aKQ1(1 To 99, 1 To 2)
    ReDim aKQ2(1 To 99, 1 To 2):            ReDim aKQ3(1 To 99, 1 To 2)
    ReDim aKQ4(1 To 99, 1 To 2):            ReDim aKQ5(1 To 99, 1 To 2)
    ReDim aKQ6(1 To 99, 1 To 2):            ReDim aKQ7(1 To 99, 1 To 2)
    ReDim aKQ9(1 To 99, 1 To 2):            ReDim aKQ8(1 To 99, 1 To 2)
    ReDim aDg(1 To 10, 1 To 1) As Integer
 
    Rows("5:99").Hidden = False:            [A5].Resize(95, 40).ClearContents
    Application.ScreenUpdating = False
   For J = 1 To UBound(Arr())
1        If Arr(J, Col) <> Space(0) Then
            aDg(1, 1) = aDg(1, 1) + 1:      aKQ0(aDg(1, 1), 1) = Arr(J, 3)
            aKQ0(aDg(1, 1), 2) = Arr(J, Col)
            aKQ0(aDg(1, 1), 3) = Arr(J, Col) / B2_ / D2_ / 8
        End If
2        If (Arr(J, 1 + Col)) <> Space(0) Then
            aDg(2, 1) = aDg(2, 1) + 1
            aKQ1(aDg(2, 1), 1) = Arr(J, 3)
            aKQ1(aDg(2, 1), 2) = Arr(J, 1 + Col)
        End If
3        If (Arr(J, 2 + Col)) <> Space(0) Then
            aDg(3, 1) = aDg(3, 1) + 1:                  aKQ2(aDg(3, 1), 1) = Arr(J, 3)
            aKQ2(aDg(3, 1), 2) = Arr(J, 2 + Col)
        End If
4        If Arr(J, 3 + Col) <> Space(0) Then
            aDg(4, 1) = aDg(4, 1) + 1:                  aKQ3(aDg(4, 1), 1) = Arr(J, 3)
            aKQ3(aDg(4, 1), 2) = Arr(J, 3 + Col)
        End If
5        If Arr(J, 4 + Col) <> Space(0) Then
            aDg(5, 1) = aDg(5, 1) + 1:                  aKQ4(aDg(5, 1), 1) = Arr(J, 3)
            aKQ4(aDg(5, 1), 2) = Arr(J, 4 + Col)
        End If
6        If Arr(J, 5 + Col) <> Space(0) Then
            aDg(6, 1) = aDg(6, 1) + 1:                  aKQ5(aDg(6, 1), 1) = Arr(J, 3)
            aKQ5(aDg(6, 1), 2) = Arr(J, 5 + Col)
        End If
7        If Arr(J, 6 + Col) <> Space(0) Then
            aDg(7, 1) = aDg(7, 1) + 1:                  aKQ6(aDg(7, 1), 1) = Arr(J, 3)
            aKQ6(aDg(7, 1), 2) = Arr(J, 6 + Col)
        End If
8        If Arr(J, 7 + Col) <> Space(0) Then
            aDg(8, 1) = aDg(8, 1) + 1:                  aKQ7(aDg(8, 1), 1) = Arr(J, 3)
            aKQ7(aDg(8, 1), 2) = Arr(J, 7 + Col)
        End If
9        If Arr(J, 8 + Col) <> Space(0) Then
            aDg(9, 1) = aDg(9, 1) + 1:                  aKQ8(aDg(9, 1), 1) = Arr(J, 3)
            aKQ8(aDg(9, 1), 2) = Arr(J, 8 + Col)
        End If
10       If Arr(J, 9 + Col) <> Space(0) Then
            aDg(10, 1) = aDg(10, 1) + 1:                  aKQ9(aDg(10, 1), 1) = Arr(J, 3)
            aKQ9(aDg(10, 1), 2) = Arr(J, 9 + Col)
        End If
    Next J
    [A5].Resize(aDg(1, 1), 3) = aKQ0():             [e5].Resize(aDg(2, 1), 2).Value = aKQ1()
    [I5].Resize(aDg(3, 1), 2).Value = aKQ2():       [M5].Resize(aDg(4, 1), 2).Value = aKQ3()
    [Q5].Resize(aDg(5, 1), 2).Value = aKQ4():       [U5].Resize(aDg(6, 1), 2).Value = aKQ5()
    [Y5].Resize(aDg(7, 1), 2).Value = aKQ6():       [AC5].Resize(aDg(8, 1), 2).Value = aKQ7()
    [AG5].Resize(aDg(9, 1), 2).Value = aKQ8():      [Ak5].Resize(aDg(10, 1), 2).Value = aKQ9()
'Xác Dinh Dòng Có Du Liêu   '
    For J = 1 To 10
        If aDg(J, 1) > rMax Then rMax = aDg(J, 1)
    Next J
    Rows(rMax + 6 & ":99").Hidden = True
    Application.ScreenUpdating = True
    MsgBox "Xong Rôi Nha!", , "GPE.COM Xin Chào! " & rMax
 End If
End Sub
Anh ơi, sau khi em làm thử thì có 3 vấn đề anh ạ. (Như em mô tả ở bài #7)
=> cột 8h: Số lượng/6(ô B2)/ô D2/8/ trung bình tiêu chuẩn(*)
=> cột 9.5h: Số lượng/6(ô B2)/ô D2/9.5/ trung bình tiêu chuẩn(**)
1. Chưa có chia theo tiêu chuẩn nữa anh
2. Ô B2 và ô D2 di chuyển theo từng tuần (Số lượng có thể khác), nên anh thay đổi dữ liệu điều kiện trong code giúp em với ạ.
3. Chưa có tính tổng theo TEN GIAY anh ạ (TEN GIAY còn trùng nhau). em cảm ơn
 
Lần chỉnh sửa cuối:
Upvote 0
Macro này sẽ tổng hợp số liệu mươi ngày, tính từ ô [A2] & hiện chỉ 2 cột
PHP:
Sub TongHopTheoNgay()
 Dim Arr(), Dic As Object, Sh As Worksheet, Cls As Range
 Dim Rws As Long, J As Long, Col As Integer, Cot As Integer, W As Integer, MaxR As Integer
 Dim SKey As String

 Set Dic = CreateObject("Scripting.Dictionary")
 Set Sh = ThisWorkbook.Worksheets("KeHoach")
 Rws = Sh.[C2].CurrentRegion.Rows.Count
 Sheets("Chat").Select
 [A5:AN99].ClearContents:                               Rows("5:99").Hidden = False
 For Each Cls In Sh.Range(Sh.[h1], Sh.[h1].End(xlToRight))
    If Cls.Value = [A2].Value Then
        Col = Cls.Column:                               Exit For
    End If
 Next Cls
 For Cot = 0 To 9
    Arr() = Sh.Range(Sh.[C2], Sh.Cells(2, 10 + Col)).Resize(Rws).Value
    Set Dic = CreateObject("Scripting.Dictionary")
    ReDim aKQ(1 To 99, 1 To 4):                         W = 0
    For J = 1 To UBound(Arr())
        SKey = Arr(J, 1)
        If Arr(J, Cot + Col - 2) <> Space(0) Then
        If Not Dic.Exists(Arr(J, 1)) Then
            W = W + 1:                                  aKQ(W, 1) = Arr(J, 1)
            aKQ(W, 2) = Arr(J, Cot + Col - 2):          Dic.Add SKey, W
        Else
            aKQ(Dic.Item(SKey), 2) = aKQ(Dic.Item(SKey), 2) + Arr(J, Cot + Col - 2)
        End If
        End If
    Next J
    Cells(5, 4 * Cot + 1).Resize(W, 2) = aKQ()
    If MaxR < W Then MaxR = W
 Next Cot
 Rows(MaxR + 6 & ":99").Hidden = True
End Sub
 
Upvote 0
Macro này sẽ tổng hợp số liệu mươi ngày, tính từ ô [A2] & hiện chỉ 2 cột
PHP:
Sub TongHopTheoNgay()
 Dim Arr(), Dic As Object, Sh As Worksheet, Cls As Range
 Dim Rws As Long, J As Long, Col As Integer, Cot As Integer, W As Integer, MaxR As Integer
 Dim SKey As String

 Set Dic = CreateObject("Scripting.Dictionary")
 Set Sh = ThisWorkbook.Worksheets("KeHoach")
 Rws = Sh.[C2].CurrentRegion.Rows.Count
 Sheets("Chat").Select
 [A5:AN99].ClearContents:                               Rows("5:99").Hidden = False
 For Each Cls In Sh.Range(Sh.[h1], Sh.[h1].End(xlToRight))
    If Cls.Value = [A2].Value Then
        Col = Cls.Column:                               Exit For
    End If
 Next Cls
 For Cot = 0 To 9
    Arr() = Sh.Range(Sh.[C2], Sh.Cells(2, 10 + Col)).Resize(Rws).Value
    Set Dic = CreateObject("Scripting.Dictionary")
    ReDim aKQ(1 To 99, 1 To 4):                         W = 0
    For J = 1 To UBound(Arr())
        SKey = Arr(J, 1)
        If Arr(J, Cot + Col - 2) <> Space(0) Then
        If Not Dic.Exists(Arr(J, 1)) Then
            W = W + 1:                                  aKQ(W, 1) = Arr(J, 1)
            aKQ(W, 2) = Arr(J, Cot + Col - 2):          Dic.Add SKey, W
        Else
            aKQ(Dic.Item(SKey), 2) = aKQ(Dic.Item(SKey), 2) + Arr(J, Cot + Col - 2)
        End If
        End If
    Next J
    Cells(5, 4 * Cot + 1).Resize(W, 2) = aKQ()
    If MaxR < W Then MaxR = W
 Next Cot
 Rows(MaxR + 6 & ":99").Hidden = True
End Sub
em mới làm thử là đã bỏ được dữ liệu trùng.
Còn phần tính toán ở cột 8h(Cột C) và 9.5h (Cột D) thì như thế nào anh ạ và chạy hết 10 tuần sẽ như thế nào anh. phiên anh hỗ trợ ạ
 
Upvote 0
em mới làm thử là đã bỏ được dữ liệu trùng.
Còn phần tính toán ở cột 8h(Cột C) và 9.5h (Cột D) thì như thế nào anh ạ và chạy hết 10 tuần sẽ như thế nào anh. phiên anh hỗ trợ ạ
(1) Đã có kết quả mươi ngày rồi mà, ở cột [Số lương]

Còn đây là số liệu cột thứ 3 của ngày đầu tiên trong bảng dữ liệu, bạn xem & kiểm thử:

Tên GiàySố lượngH/ngày
Tumbleweed/Espresso1320.16
Vibrant Violet/Stucco91680.80
Khaki/Stucco256802.23
Black/Light Grey124981.08
Charcoal/Light Grey69821.06
Dusty olive/Cobblestone51440.45
Navy/Stucco88240.77
Black/Smoke100102.07
Chocolate/Hazelnut145131.26
Light Grey/White19300.76
Black/Black25910.54
Khaki/Espresso72720.63
Charcoal/Stucco1260.01
Khaki/Walnut114324.33
Smoke/Buttercup360.00
espresso/espresso9660.35
khaki/mushroom82862.12
Navy/White10220.40
Navy/Light Grey49290.52
Pool/Viola11310.25
Nautical navy/Wild orchid1680.12

Chú ơi cho cháu hỏi mấy cái số đánh ở đầu dòng này ý nghĩa và tác dụng của nó là gì thế ạ?
Các con số đó:
a./ VBA cho phép, miễn là không trùng
b./ VBA cung cấp cho ta hàm Erl() để cho ta biết dòng (đã được ta đánh số) nào đang chứa lỗi;
Tuy nhiên cũng cần lưu í rằng, có thể lỗi ở các dòng lệnh trên/trước nó
 
Lần chỉnh sửa cuối:
Upvote 0
(1) Đã có kết quả mươi ngày rồi mà, ở cột [Số lương]

Còn đây là số liệu cột thứ 3 của ngày đầu tiên trong bảng dữ liệu, bạn xem & kiểm thử:

Tên GiàySố lượngH/ngày
Tumbleweed/Espresso1320.16
Vibrant Violet/Stucco91680.80
Khaki/Stucco256802.23
Black/Light Grey124981.08
Charcoal/Light Grey69821.06
Dusty olive/Cobblestone51440.45
Navy/Stucco88240.77
Black/Smoke100102.07
Chocolate/Hazelnut145131.26
Light Grey/White19300.76
Black/Black25910.54
Khaki/Espresso72720.63
Charcoal/Stucco1260.01
Khaki/Walnut114324.33
Smoke/Buttercup360.00
espresso/espresso9660.35
khaki/mushroom82862.12
Navy/White10220.40
Navy/Light Grey49290.52
Pool/Viola11310.25
Nautical navy/Wild orchid1680.12


Các con số đó:
a./ VBA cho phép, miễn là không trùng
b./ VBA cung cấp cho ta hàm Erl() để cho ta biết dòng (đã được ta đánh số) nào đang chứa lỗi;
Tuy nhiên cũng cần lưu í rằng, có thể lỗi ở các dòng lệnh trên/trước nó
Anh ơi, sao em bỏ code (sub) của anh vào thì lại không ra số giống với cái bảng này của anh. anh chưa đính kèm code hả anh.
 
Lần chỉnh sửa cuối:
Upvote 0

File đính kèm

  • Dictionary.rar
    196.8 KB · Đọc: 8
Lần chỉnh sửa cuối:
Upvote 0
3 Trang tính 'Chat', 'Dem' & 'In' có số liệu giống na na nhau, chỉ khác cách tính lấy số liệu 'TieuChuan' ở 3 cột khác nhau của trang 'TieuChuan' mà thôi;
Chuyện này cho phép ta gộp lên 1 trang tính, trang này sẽ thể hiện kết quả theo lựa chọn của ta cần vế 'Chat', 'In' hay 'Dem'
???
 
Upvote 0
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:
 

File đính kèm

  • Dictionary.rar
    197.4 KB · Đọc: 11
Upvote 0
Giải pháp
Web KT

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

Back
Top Bottom