Nhờ hướng dẫn viết code tính tiền từng nhân viên

Liên hệ QC

saobekhonglac

Thành viên mới
Tham gia
1/11/08
Bài viết
1,565
Được thích
1,450
Giới tính
Nam
Chào Anh/Chị.

Mình có file Excel từ cột A-->K. Từ cột C đến I là mã số từng nhân viên (7 nhân viên, có thể có vài cột trùng nhau hoặc trùng nhau hết). Cột J là tổng tiền của 1 Code KH. Cột K là tiền từng người được hưởng (= cột J/7). Mình nhờ Anh/Chị viết dùm mình code hoặc công thức tính tiền của từng nhân viên của 7 cột với điều kiện nhân viên nào xuất hiện ở nhiều dòng và cột thì sẽ sum lại tất cả các dòng và cột. Mình có làm thử kết quả ở cột M-->N
 

File đính kèm

  • Tinh tong tien.xlsm
    17.2 KB · Đọc: 17
Có ai giúp mình với. Chứ dữ liệu nhiều dòng mà copy 7 lần thì hơi lâu
 
Chào Anh/Chị.

Mình có file Excel từ cột A-->K. Từ cột C đến I là mã số từng nhân viên (7 nhân viên, có thể có vài cột trùng nhau hoặc trùng nhau hết). Cột J là tổng tiền của 1 Code KH. Cột K là tiền từng người được hưởng (= cột J/7). Mình nhờ Anh/Chị viết dùm mình code hoặc công thức tính tiền của từng nhân viên của 7 cột với điều kiện nhân viên nào xuất hiện ở nhiều dòng và cột thì sẽ sum lại tất cả các dòng và cột. Mình có làm thử kết quả ở cột M-->N
Bạn nhập thử công thức này vào ô O2 rồi copy xuống xem kết quả thế nào:
PHP:
O2=SUMPRODUCT(($C$2:$I$18=M2)*($K$2:$K$18))
 
Công thức này thì đúng rồi anh, nhưng cái quan trọng là em chưa có dữ liệu tại cột M
Cái quan trọng chắc phải dùng VBA.
PHP:
Public Sub GPE()
Dim sArr(), dArr(), I As Long, J As Long, K As Long, Tem As String
With CreateObject("Scripting.Dictionary")
    sArr = Range("C2:K18").Value    '-----------------Vung Du lieu'
    ReDim dArr(1 To UBound(sArr) * UBound(sArr, 2), 1 To 2)
    For I = 1 To UBound(sArr)
        For J = 1 To 7
            Tem = sArr(I, J)
            If Not .Exists(Tem) Then
                K = K + 1
                .Item(Tem) = K
                dArr(K, 1) = Tem
                dArr(K, 2) = sArr(I, 9)
            Else
                dArr(.Item(Tem), 2) = dArr(.Item(Tem), 2) + sArr(I, 9)
            End If
        Next J
    Next I
End With
Range("M2").Resize(K, 2) = dArr
Range("M2").Resize(K, 2).Sort Key1:=Range("M2")
End Sub
 
Cám ơn anh. Cột M anh chỉnh dùm em dữ liệu dạng Text được không anh.
Cái quan trọng chắc phải dùng VBA.
PHP:
Public Sub GPE()
Dim sArr(), dArr(), I As Long, J As Long, K As Long, Tem As String
With CreateObject("Scripting.Dictionary")
    sArr = Range("C2:K18").Value    '-----------------Vung Du lieu'
    ReDim dArr(1 To UBound(sArr) * UBound(sArr, 2), 1 To 2)
    For I = 1 To UBound(sArr)
        For J = 1 To 7
            Tem = sArr(I, J)
            If Not .Exists(Tem) Then
                K = K + 1
                .Item(Tem) = K
                dArr(K, 1) = Tem
                dArr(K, 2) = sArr(I, 9)
            Else
                dArr(.Item(Tem), 2) = dArr(.Item(Tem), 2) + sArr(I, 9)
            End If
        Next J
    Next I
End With
Range("M2").Resize(K, 2) = dArr
Range("M2").Resize(K, 2).Sort Key1:=Range("M2")
End Sub
 
Web KT
Back
Top Bottom