Cần giúp tính toán Tổng giờ thực hiện theo từng người

Liên hệ QC

giang127

Thành viên hoạt động
Tham gia
24/12/07
Bài viết
138
Được thích
8
Chào các bác,
Nhờ bác nào có kinh nghiệm giúp đỡ em công thức tính Tổng giờ thực hiện theo từng người. Hiện có việc nhiều người cùng làm, tính theo tỷ lệ thì sẽ khác. Chi tiết theo như file đính kèm ạ.
 

File đính kèm

  • tinh tong h.xlsx
    9.5 KB · Đọc: 7
Chào các bác,
Nhờ bác nào có kinh nghiệm giúp đỡ em công thức tính Tổng giờ thực hiện theo từng người. Hiện có việc nhiều người cùng làm, tính theo tỷ lệ thì sẽ khác. Chi tiết theo như file đính kèm ạ.
Thử code.
Mã:
Sub ghjk()
    Dim i As Long, lr As Long, arr, kq, dic, j As Integer, a As Long, dk As String, b As Long
    Set dic = CreateObject("scripting.dictionary")
    With Sheets("sheet1")
         lr = .Range("C" & Rows.Count).End(xlUp).Row
         If lr < 2 Then GoTo xong
         arr = .Range("C2:O" & lr).Value
         ReDim kq(1 To UBound(arr) * 4, 1 To 2)
         For i = 1 To UBound(arr)
             For j = 1 To 12 Step 2
                 dk = arr(i, j)
                 If Len(dk) Then
                 If Not dic.exists(dk) Then
                    a = a + 1
                    dic.Add dk, a
                    kq(a, 1) = dk
                    kq(a, 2) = arr(i, j + 1) * arr(i, 13)
                Else
                   b = dic.Item(dk)
                   kq(b, 2) = kq(b, 2) + arr(i, j + 1) * arr(i, 13)
                End If
                End If
             Next j
        Next i
        .Range("q2:R1000").ClearContents
        If a Then .Range("q2:r2").Resize(a).Value = kq
    End With
xong:
    Set dic = Nothing
End Sub
 
Upvote 0
Thử code.
Mã:
Sub ghjk()
    Dim i As Long, lr As Long, arr, kq, dic, j As Integer, a As Long, dk As String, b As Long
    Set dic = CreateObject("scripting.dictionary")
    With Sheets("sheet1")
         lr = .Range("C" & Rows.Count).End(xlUp).Row
         If lr < 2 Then GoTo xong
         arr = .Range("C2:O" & lr).Value
         ReDim kq(1 To UBound(arr) * 4, 1 To 2)
         For i = 1 To UBound(arr)
             For j = 1 To 12 Step 2
                 dk = arr(i, j)
                 If Len(dk) Then
                 If Not dic.exists(dk) Then
                    a = a + 1
                    dic.Add dk, a
                    kq(a, 1) = dk
                    kq(a, 2) = arr(i, j + 1) * arr(i, 13)
                Else
                   b = dic.Item(dk)
                   kq(b, 2) = kq(b, 2) + arr(i, j + 1) * arr(i, 13)
                End If
                End If
             Next j
        Next i
        .Range("q2:R1000").ClearContents
        If a Then .Range("q2:r2").Resize(a).Value = kq
    End With
xong:
    Set dic = Nothing
End Sub
Rất cảm ơn bác đã giúp đỡ bằng Hàm VBA. Nhưng case của mình có thể xử lý bằng công thức không nhỉ. Mình cũng muốn học hỏi thêm về công thức excel. Hơn nữa gửi file có VBA máy cơ quan nó toàn báo virus
 
Upvote 0
Chào các bác,
Nhờ bác nào có kinh nghiệm giúp đỡ em công thức tính Tổng giờ thực hiện theo từng người. Hiện có việc nhiều người cùng làm, tính theo tỷ lệ thì sẽ khác. Chi tiết theo như file đính kèm ạ.
Công thức mảng, kết thúc = ctrl+shift+enter.
Tại R2
Mã:
=SUM(IF($C$2:$M$7=Q2,$D$2:$N$7*$O$2:$O$7,0))
 
Upvote 0
Web KT

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

Back
Top Bottom