Giúp em file excell này phải dùng hàm gì để tính tổng sp làm ra

Liên hệ QC
Em dùng đủ mọi cách rồi nhưng không được,
Dùng công thức mảng:
=SUM ( ('Vùng 3 cột thứ 1' = 'Giá trị tìm ')* 'Cột giá trị thứ 1' , ('Vùng 3 cột thứ 2' = 'Giá trị tìm ') * 'Cột giá trị thứ 2' , ('Vùng 3 cột thứ 3' = 'Giá trị tìm ') * 'Cột giá trị thứ 3' ) kết thúc bằng Ctrl+Shift+Enter.

Thân
 
Em dùng đủ mọi cách rồi nhưng không được,
Dùng thử code này
Mã:
Sub Sumproduct_()
Dim Arr1, Arr2, Arr3
Dim Res
Dim i As Long, j As Long
With Sheet1
Arr1 = .Range("a1").CurrentRegion
Arr2 = .Range("g1").CurrentRegion
Arr3 = .Range("m1").CurrentRegion
End With
With CreateObject("Scripting.Dictionary")
    For i = 2 To UBound(Arr1)
        For j = 2 To 4
            If Arr1(i, j) <> "" Then
                .Item(Arr1(i, j)) = .Item(Arr1(i, j)) + Arr1(i, 5)
            End If
        Next j
    Next i
    For i = 2 To UBound(Arr2)
        For j = 2 To 3
            If Arr2(i, j) <> "" Then
                .Item(Arr2(i, j)) = .Item(Arr2(i, j)) + Arr2(i, 5)
            End If
        Next j
    Next i
    For i = 2 To UBound(Arr3)
        For j = 2 To 3
            If Arr3(i, j) <> "" Then
                .Item(Arr3(i, j)) = .Item(Arr3(i, j)) + Arr3(i, 5)
            End If
        Next j
    Next i
    ReDim Res(1 To .Count, 1 To 2)
    For i = 0 To .Count - 1
        Res(i + 1, 1) = .keys()(i)
        Res(i + 1, 2) = .items()(i)
    Next i
End With
Sheet1.Range("w2").Resize(UBound(Res), UBound(Res, 2)) = Res
End Sub
 
Dùng công thức mảng:
=SUM ( ('Vùng 3 cột thứ 1' = 'Giá trị tìm ')* 'Cột giá trị thứ 1' , ('Vùng 3 cột thứ 2' = 'Giá trị tìm ') * 'Cột giá trị thứ 2' , ('Vùng 3 cột thứ 3' = 'Giá trị tìm ') * 'Cột giá trị thứ 3' ) kết thúc bằng Ctrl+Shift+Enter.

Thân
Cảm ơn anh Phan Thế Hiệp, nhưng mình vần chưa hiểu vùng giá trị là như thế nào, anh có thể làm mẫu file excell giúp Đạt được không, cảm ơn anh nhiều...!!!!!!!
Bài đã được tự động gộp:

Dùng thử code này
Mã:
Sub Sumproduct_()
Dim Arr1, Arr2, Arr3
Dim Res
Dim i As Long, j As Long
With Sheet1
Arr1 = .Range("a1").CurrentRegion
Arr2 = .Range("g1").CurrentRegion
Arr3 = .Range("m1").CurrentRegion
End With
With CreateObject("Scripting.Dictionary")
    For i = 2 To UBound(Arr1)
        For j = 2 To 4
            If Arr1(i, j) <> "" Then
                .Item(Arr1(i, j)) = .Item(Arr1(i, j)) + Arr1(i, 5)
            End If
        Next j
    Next i
    For i = 2 To UBound(Arr2)
        For j = 2 To 3
            If Arr2(i, j) <> "" Then
                .Item(Arr2(i, j)) = .Item(Arr2(i, j)) + Arr2(i, 5)
            End If
        Next j
    Next i
    For i = 2 To UBound(Arr3)
        For j = 2 To 3
            If Arr3(i, j) <> "" Then
                .Item(Arr3(i, j)) = .Item(Arr3(i, j)) + Arr3(i, 5)
            End If
        Next j
    Next i
    ReDim Res(1 To .Count, 1 To 2)
    For i = 0 To .Count - 1
        Res(i + 1, 1) = .keys()(i)
        Res(i + 1, 2) = .items()(i)
    Next i
End With
Sheet1.Range("w2").Resize(UBound(Res), UBound(Res, 2)) = Res
End Sub
Cảm ơn bạn đã góp ý cho Đạt rất nhiều nhưng viết code Đạt dốt đặc cán mai, không biết làm sao, coppy như thế nào luôn
 
Dùng công thức mảng:
=SUM ( ('Vùng 3 cột thứ 1' = 'Giá trị tìm ')* 'Cột giá trị thứ 1' , ('Vùng 3 cột thứ 2' = 'Giá trị tìm ') * 'Cột giá trị thứ 2' , ('Vùng 3 cột thứ 3' = 'Giá trị tìm ') * 'Cột giá trị thứ 3' ) kết thúc bằng Ctrl+Shift+Enter
Chắc anh lại đang quánh bằng điện thoại. :P
 
Chắc anh lại đang quánh bằng điện thoại. :p
Chưa! khoảng 30' nữa mới dùng điện thoại oánh chữ. :D

Cảm ơn anh Phan Thế Hiệp, nhưng mình vần chưa hiểu vùng giá trị là như thế nào, anh có thể làm mẫu file excell giúp Đạt được không, cảm ơn anh nhiều...!!!!!!!
Mã:
T2=SUMPRODUCT(($B$2:$D$8=$S2)*$E$2:$E$8+($H$2:$J$8=$S2)*$K$2:$K$8+($N$2:$P$8=$S2)*$Q$2:$Q$8)
Enter, fill xuống

Thân
 

File đính kèm

Cảm ơn anh Phan Thế Hiệp, nhưng mình vần chưa hiểu vùng giá trị là như thế nào, anh có thể làm mẫu file excell giúp Đạt được không, cảm ơn anh nhiều...!!!!!!!
Trong file bạn làm mẫu chỉ có 3 chuyền, nếu giả sử có 10 chuyền hoặc hơn nữa, thì khi áp dụng công thức tại bài #6 sẽ rất dài và khó lòng xem xét tra cứu.
Mã:
C12=SUMPRODUCT(($B$2:$D$8=$B12)*$E$2:$E$8+($H$2:$J$8=$B12)*$K$2:$K$8+($N$2:$P$8=$B12)*$Q$2:$Q$8+
($T$2:$V$8=$B12)*$W$2:$W$8+($Z$2:$AB$8=$B12)*$AC$2:$AC$8+($AF$2:$AH$8=$B12)*$AI$2:$AI$8+($AL$2:$AN$8=$B12)*$AO$2:$AO$8
+($AR$2:$AT$8=$B12)*$AU$2:$AU$8+($AX$2:$AZ$8=$B12)*$BA$2:$BA$8+($BD$2:$BF$8=$B12)*$BG$2:$BG$8)
Enter, fill xuống.

Tôi làm thêm cho bạn 1 công thức tổng quát khác nếu như có trường hợp nhiều chuyền xảy ra, bạn dùng như sau:
Mã:
D12=SUMPRODUCT(($B$2:$BF$8=$B12)*N(OFFSET($E$2:$E$8,ROW($1:$7)-1,INT((COLUMN($A:$BE)-1)/6)*6)))
Enter, fill xuống.
Với lưu ý:
$B$2:$BF$8: BF là cột cuối chứa tên nhân viên, thuộc chuyền 10.
COLUMN($A:$BE): ở trên là B: BF, thì số cột tương ứng là A: BE
Do vậy dù có số chuyền tăng hơn nữa, thì bạn chỉ cần chỉnh tại 2 vị trí trên là giải quyết được.

Thân
 

File đính kèm

Xin góp 1 hàm tự tạo:
PHP:
Function SL(Ten As String, CSDL As Range) As Double
Dim Cls As Range

For Each Cls In CSDL
    If Cls.Value = Ten Then
        SL = SL + Cls.End(xlToRight).Value
    End If
Next Cls
End Function

/(hi đó cú fáp tại ô [T9] sẽ là =SL(S9,$B$2:Q15)
 
Em dùng đủ mọi cách rồi nhưng không được,
Góp ý cho bạn:
1/ Cấu trúc bạn làm không hợp lý vì đây có thể chỉ là 1 phân xưởng.
2/ Trường hợp 1 phân xưởng có nhiều hơn 3 chuyền thì sao?
3/ Nếu Công ty có hàng chục phân xưởng thì làm thế nào để gộp một lần (chắc bó tay với cấu trúc này rồi).
4/ Chưa kể tính lương tháng theo sản phẩm thì bó tay luôn.
 
Trong file bạn làm mẫu chỉ có 3 chuyền, nếu giả sử có 10 chuyền hoặc hơn nữa, thì khi áp dụng công thức tại bài #6 sẽ rất dài và khó lòng xem xét tra cứu.
Mã:
C12=SUMPRODUCT(($B$2:$D$8=$B12)*$E$2:$E$8+($H$2:$J$8=$B12)*$K$2:$K$8+($N$2:$P$8=$B12)*$Q$2:$Q$8+
($T$2:$V$8=$B12)*$W$2:$W$8+($Z$2:$AB$8=$B12)*$AC$2:$AC$8+($AF$2:$AH$8=$B12)*$AI$2:$AI$8+($AL$2:$AN$8=$B12)*$AO$2:$AO$8
+($AR$2:$AT$8=$B12)*$AU$2:$AU$8+($AX$2:$AZ$8=$B12)*$BA$2:$BA$8+($BD$2:$BF$8=$B12)*$BG$2:$BG$8)
Enter, fill xuống.

Tôi làm thêm cho bạn 1 công thức tổng quát khác nếu như có trường hợp nhiều chuyền xảy ra, bạn dùng như sau:
Mã:
D12=SUMPRODUCT(($B$2:$BF$8=$B12)*N(OFFSET($E$2:$E$8,ROW($1:$7)-1,INT((COLUMN($A:$BE)-1)/6)*6)))
Enter, fill xuống.
Với lưu ý:
$B$2:$BF$8: BF là cột cuối chứa tên nhân viên, thuộc chuyền 10.
COLUMN($A:$BE): ở trên là B: BF, thì số cột tương ứng là A: BE
Do vậy dù có số chuyền tăng hơn nữa, thì bạn chỉ cần chỉnh tại 2 vị trí trên là giải quyết được.

Tuyệt vời! cảm ơn bạn
Bài đã được tự động gộp:

Cảm ơn mọi người góp y giúp Đạt nhé
 
Web KT

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

Back
Top Bottom