Tính tổng nhiều điều kiện? (1 người xem)

Người dùng đang xem chủ đề này

củ lạc

Thành viên chính thức
Tham gia
30/1/17
Bài viết
62
Được thích
0
Xin chào các bạn,
Nhờ các bạn giúp đỡ trường hợp tính tổng nhiều điều kiện theo file đính kèm này.
Cảm ơn
 

File đính kèm

Mã:
k6=SUMPRODUCT((MONTH($D$6:$D$22)=MONTH($J6))*($E$6:$E$22=K$5),$F$6:$F$22)
 
Xin chào các bạn,
Nhờ các bạn giúp đỡ trường hợp tính tổng nhiều điều kiện theo file đính kèm này.
Cảm ơn
Góp thêm 2 công thức khác:
Mã:
K6=SUMPRODUCT((TEXT($D$6:$D$22,"mm/yyyy")=TEXT($J6,"mm/yyyy"))*($E$6:$E$22=K$5),($F$6:$F$22))
Hoặc K6=SUMPRODUCT((EOMONTH(OFFSET($D$6,ROW($1:$17)-1,),-1)+1=$J6)*($E$6:$E$22=K$5),($F$6:$F$22))
Fill xuống rồi copy qua phải.

Chúc bạn ngày vui.
 
Góp thêm 2 công thức khác:
Mã:
K6=SUMPRODUCT((TEXT($D$6:$D$22,"mm/yyyy")=TEXT($J6,"mm/yyyy"))*($E$6:$E$22=K$5),($F$6:$F$22))
Hoặc K6=SUMPRODUCT((EOMONTH(OFFSET($D$6,ROW($1:$17)-1,),-1)+1=$J6)*($E$6:$E$22=K$5),($F$6:$F$22))
Fill xuống rồi copy qua phải.

Chúc bạn ngày vui.

Anh xét cả năm...
Tổng hợp số lượng theo điều kiện tên và tháng
Em cố theo anh. he he.
Mã:
K6=SUMPRODUCT((MONTH($D$6:$D$22)=MONTH($J6))*(YEAR($D$6:$D$22)=YEAR($J6))*($E$6:$E$22=K$5),$F$6:$F$22)
 
Anh xét cả năm...

Em cố theo anh. he he.
Mã:
K6=SUMPRODUCT((MONTH($D$6:$D$22)=MONTH($J6))*(YEAR($D$6:$D$22)=YEAR($J6))*($E$6:$E$22=K$5),$F$6:$F$22)
Đúng vậy em, nhiều khi phòng ngừa chủ thớt gõ: J6= 01/01/2016, hoặc J7= 01/02/2018 anh em mình sẽ !$@!!!$@!!!$@!!
Khà khà khà.

Chúc em ngày vui. }}}}}}}}}}}}}}}
 
Chủ thớt yêu cầu tới đâu thì làm tới đó. Làm thừa chưa chắc đã đúng ý ạ.

Chúc anh ngày vui! /-*+/
Thì bởi!

Có mấy bài anh lo xa quá, nhưng lại không đúng ý chủ thớt, y như em nói vậy! thiệt tình đôi lúc cũng khổ lắm lắm...--=0--=0

Nhưng tại bản tính của anh nghĩ "Cẩn tắc vô ưu", cẩn thận giờ thì không lo sau này.

Chúc em ngày thiệt vui. }}}}}}}}}}}}}}}
 
Đúng vậy em, nhiều khi phòng ngừa chủ thớt gõ: J6= 01/01/2016, hoặc J7= 01/02/2018 anh em mình sẽ !$@!!!$@!!!$@!!
Khà khà khà.

Chúc em ngày vui. }}}}}}}}}}}}}}}

Nếu xét tháng năm thì SUMIFS() nhìn cũng dễ hiểu:
PHP:
K6=SUMIFS($F$6:$F$22;$E$6:$E$22;K$5;$D$6:$D$22;">="&$J6;$D$6:$D$22;"<="& DATE(YEAR($J6);MONTH($J6)+1;0))
 
Xin chào các bạn,
Nhờ các bạn giúp đỡ trường hợp tính tổng nhiều điều kiện theo file đính kèm này.
Cảm ơn
Xin được góp vui cùng mọi người công thức mảng:
=SUM(IF(MONTH($D$6:$D$22)=MONTH($J6),IF($E$6:$E$22=K$5,$F$6:$F$22,0),0))
note=> Nhấn CTRL+SHIFT+ENTER nhé
 
Nếu xét tháng năm thì SUMIFS() nhìn cũng dễ hiểu:
PHP:
K6=SUMIFS($F$6:$F$22;$E$6:$E$22;K$5;$D$6:$D$22;">="&$J6;$D$6:$D$22;"<="& DATE(YEAR($J6);MONTH($J6)+1;0))
Khoái có anh Ba Tê góp vui. Khà khà.

Cái đoạn cuối DATE(YEAR($J6);MONTH($J6)+1;0) chắc hiểu: vầy EDATE($J6;1)-1 hoặc EOMONTH($J6,0), thì đúng ý anh không!

Chúc anh ngày vui. }}}}}}}}}}}}}}}
 
Khoái có anh Ba Tê góp vui. Khà khà.

Cái đoạn cuối DATE(YEAR($J6);MONTH($J6)+1;0) chắc hiểu: vầy EDATE($J6;1)-1 hoặc EOMONTH($J6,0), thì đúng ý anh không!

Chúc anh ngày vui. }}}}}}}}}}}}}}}

Đúng đó, nhưng Ex 2003 thì không xài được. Nếu 2007 về sau thì tìm hàm nào đó thay cho gọn.
 
Cảm ơn các bạn rất nhiều.
Nhờ có các bạn mà tôi đã giải quyết được vấn đề.

Các bạn cho hỏi thêm nếu làm việc với dữ liệu lớn thì trong các công thức trên, công thức nào là nhẹ nhất.
 
Lần chỉnh sửa cuối:
Xin chào các bạn,
Các bạn giúp cho tôi bài tập trong file đính kèm này với.

Cảm ơn
 

File đính kèm

Không có gì bạn!!!!!!!!!

eke_rula ơi, còn công thức nào khác không,
công thức này sum ở mảng dữ liệu vài chục nghìn dòng máy tính rít lên như máy cày bạn ah.
%Cacualation trên thanh trạng thái mãi mới lên được 1 tý. chạy từ nãy giờ mới đc 11% bạn ơi.!$@!!
 
eke_rula ơi, còn công thức nào khác không,
công thức này sum ở mảng dữ liệu vài chục nghìn dòng máy tính rít lên như máy cày bạn ah.
%Cacualation trên thanh trạng thái mãi mới lên được 1 tý. chạy từ nãy giờ mới đc 11% bạn ơi.!$@!!
Không dùng cột phụ thì dùng ct mảng, ct mảng mấy chục ngàn dòng chạy chậm lắm, bạn dùng cột phụ bên sheet Công dùng Vlookup()* , rồi sumif ben sheet tổng cộng sẽ nhẹ hơn nhiều đấy!!!
 
Không dùng cột phụ thì dùng ct mảng, ct mảng mấy chục ngàn dòng chạy chậm lắm, bạn dùng cột phụ bên sheet Công dùng Vlookup()* , rồi sumif ben sheet tổng cộng sẽ nhẹ hơn nhiều đấy!!!

Cảm ơn bạn, mới đầu mình cũng định như vậy nhưng không lường đến vấn đề này.
OK, muộn rồi ngủ thôi bạn ơi.
Cảm ơn bạn nhiều.
 
Cảm ơn bạn, mới đầu mình cũng định như vậy nhưng không lường đến vấn đề này.
OK, muộn rồi ngủ thôi bạn ơi.
Cảm ơn bạn nhiều.
Bạn đổi sang công thức mảng này xem, chạy nhanh hơn không!!!
Mã:
=SUM(IF(Cong!$E$4:$E$15=D6,SUMIF(Dulieu!$C$4:$C$6,Cong!$C$4:$C$15,Dulieu!$D$4:$D$6)*Cong!$D$4:$D$15))
Ctrl+Shift+Enter rồi fill xuống!!!
 
Bạn đổi sang công thức mảng này xem, chạy nhanh hơn không!!!
Mã:
=SUM(IF(Cong!$E$4:$E$15=D6,SUMIF(Dulieu!$C$4:$C$6,Cong!$C$4:$C$15,Dulieu!$D$4:$D$6)*Cong!$D$4:$D$15))
Ctrl+Shift+Enter rồi fill xuống!!!
Cảm ơn eke_rula
nhanh hơn 1 tý xíu bạn ah chắc cũng không còn cách nào khác là sử dụng cột phụ vlookup bên sheet cong thôi.
 
Xin chào các bạn,
các bạn xem giúp tôi công thức trong file kèm này với.

Cảm ơn nhiều
 

File đính kèm

Xin chào các bạn,
các bạn xem giúp tôi công thức trong file kèm này với.

Cảm ơn nhiều
Yêu cầu "Tính tổng ô J20 thỏa mãn các điều kiện tại cột M và N"? Cột N có cái gì?
Rõ là "không tôn trọng" bài viết của chính mình.

Hàm tự tạo:
PHP:
Public Function SumIf_GPE(Rng As Range, RTen As Range, Rlop As Range) As Double
Dim sArr(), R1 As Range, R2 As Range, I As Long, J As Long
sArr = Rng.Value
With CreateObject("Scripting.Dictionary")
    For Each R1 In RTen
        For Each R2 In Rlop
            .Item(R1.Value & "#" & R2.Value) = ""
        Next R2
    Next R1
    For I = 1 To UBound(sArr)
        If .Exists(sArr(I, 1) & "#" & sArr(I, 2)) Then SumIf_GPE = SumIf_GPE + sArr(I, 3)
    Next I
End With
End Function
Công thức ô J4
PHP:
=SumIf_GPE(C5:E20;L6:L8;M6:M7)
 

File đính kèm

Yêu cầu "Tính tổng ô J20 thỏa mãn các điều kiện tại cột M và N"? Cột N có cái gì?
Rõ là "không tôn trọng" bài viết của chính mình.

Hàm tự tạo:
PHP:
Public Function SumIf_GPE(Rng As Range, RTen As Range, Rlop As Range) As Double
Dim sArr(), R1 As Range, R2 As Range, I As Long, J As Long
sArr = Rng.Value
With CreateObject("Scripting.Dictionary")
    For Each R1 In RTen
        For Each R2 In Rlop
            .Item(R1.Value & "#" & R2.Value) = ""
        Next R2
    Next R1
    For I = 1 To UBound(sArr)
        If .Exists(sArr(I, 1) & "#" & sArr(I, 2)) Then SumIf_GPE = SumIf_GPE + sArr(I, 3)
    Next I
End With
End Function
Công thức ô J4
PHP:
=SumIf_GPE(C5:E20;L6:L8;M6:M7)

Xin lỗi Ba Tê, tôi nhìn nhầm !

Cụ thể vùng điều kiện trong vùng "L6:L8","M6:M7"
Cảm ơn bạn đã giúp đỡ, kết quả đúng như tôi mong muốn rồi nhưng bài này có cách nào giải quyết được bằng công thức không bạn?
 
Lần chỉnh sửa cuối:
Xin lỗi Ba Tê, tôi nhìn nhầm !
Cảm ơn bạn đã giúp đỡ, kết quả đúng như tôi mong muốn rồi nhưng bài này có cách nào giải quyết được bằng công thức không bạn?
Như anh Ba Tê (thành viên kỳ cựu) hướng dẫn bạn, và qua những bài phía trên ma eke_rula gửi cho bạn, tôi có gợi ý bạn nên tìm hiểu kỹ các công thức, nghiệm rồi sẽ áp dụng được cho sự thay đổi như yêu cầu mới này.

Gợi ý công thức: SUMPRODUCT(SUMIFS(.............))

Chúc bạn ngày vui.
 
Như anh Ba Tê (thành viên kỳ cựu) hướng dẫn bạn, và qua những bài phía trên ma eke_rula gửi cho bạn, tôi có gợi ý bạn nên tìm hiểu kỹ các công thức, nghiệm rồi sẽ áp dụng được cho sự thay đổi như yêu cầu mới này.

Gợi ý công thức: SUMPRODUCT(SUMIFS(.............))

Chúc bạn ngày vui.

Cảm ơn bạn, tôi cũng loay hoay mãi cả buổi chiều nay mà chưa đc .
Mong bạn chỉ dẫn thêm cho.

Cảm ơn
 
Như anh Ba Tê (thành viên kỳ cựu) hướng dẫn bạn, và qua những bài phía trên ma eke_rula gửi cho bạn, tôi có gợi ý bạn nên tìm hiểu kỹ các công thức, nghiệm rồi sẽ áp dụng được cho sự thay đổi như yêu cầu mới này.

Gợi ý công thức: SUMPRODUCT(SUMIFS(.............))

Chúc bạn ngày vui.

Theo gợi ý của bạn tôi đã thử công thức sau nhưng kết quả không chính xác:

J20=SUMPRODUCT(SUMIFS($E$5:$E$20,$C$5:$C$20,$L$6:$L$8,$D$5:$D$20,$M$6:$M$7))

Mong bạn chỉ dẫn thêm.
Cảm ơn.
 
Theo gợi ý của bạn tôi đã thử công thức sau nhưng kết quả không chính xác:

J20=SUMPRODUCT(SUMIFS($E$5:$E$20,$C$5:$C$20,$L$6:$L$8,$D$5:$D$20,$M$6:$M$7))

Mong bạn chỉ dẫn thêm.
Cảm ơn.
Bài này giải bằng mảng 2 chiều bạn phải thêm Tranpose thì CT mói hiểu được, bạn dùng CT mảng sau:
PHP:
=SUM(SUMIFS(E5:E20,C5:C20,L6:L8,D5:D20,TRANSPOSE(M6:M7)))
Bấm Ctrl+Shift+Enter!!!
 
Bài này giải bằng mảng 2 chiều bạn phải thêm Tranpose thì CT mói hiểu được, bạn dùng CT mảng sau:
PHP:
=SUM(SUMIFS(E5:E20,C5:C20,L6:L8,D5:D20,TRANSPOSE(M6:M7)))
Bấm Ctrl+Shift+Enter!!!

Cảm ơn eke_rula
Kết quả chuẩn rồi bạn ơi, bạn có thể giải thích cho mình hiểu thêm tại sao lại TRANSPOSE(M6:M7), mà không TRANSPOSE(L6:L8) cùng nữa, mình thấy đều là 2 mảng điều kiện tương tự như nhau.

Nếu đổi lại TRANSPOSE(M6:M7) thành TRANSPOSE(L6:L8) thì có được không bạn mình đã thử thấy nó vẫn trả kết quả đúng bạn ah.

Cảm ơn eke_rula thêm một lần nữa
 
Cảm ơn eke_rula
Kết quả chuẩn rồi bạn ơi, bạn có thể giải thích cho mình hiểu thêm tại sao lại TRANSPOSE(M6:M7), mà không TRANSPOSE(L6:L8) cùng nữa, mình thấy đều là 2 mảng điều kiện tương tự như nhau.

Nếu đổi lại TRANSPOSE(M6:M7) thành TRANSPOSE(L6:L8) thì có được không bạn mình đã thử thấy nó vẫn trả kết quả đúng bạn ah.

Cảm ơn eke_rula thêm một lần nữa
Được bạn ạ, một trong 2 cái dùng Tranpose là được!!!
Không dùng Tranpose thì nó đang là mảng dọc, dùng Tranpose nó sẽ chuyển mảng dọc thành mảng ngang, bài này mình nói là phải dùng mảng 2 chiều để giải, nên ct phải có cả mảng ngang và mảng dọc mới tạo được mảng 2 chiều, dùng cả 2 tranpose hoặc cả 2 không dùng transpose thì giống tương tự công thức của bạn làm ở trên sẽ bị lỗi, vì cùng đều là mảng ngang hoặc mảng dọc!!!
Bạn có thể đọc bài mảng 2 chiều ở đây mình có ví dụ 1 bài tương tự như bài có bạn, và giải thích:
http://www.giaiphapexcel.com/forum/showthread.php?122685-Đố-vui-về-công-thức-mảng-2-chiều!!/page6
Bài #53, khúc nói về mảnh 2 chiều!!!
Hi vọng giúp được bạn!!!
 
Lần chỉnh sửa cuối:
Được bạn ạ, một trong 2 cái dùng Tranpose là được!!!
Không dùng Tranpose thì nó đang là mảng dọc, dùng Tranpose nó sẽ chuyển mảng dọc thành mảng ngang, bài này mình nói là phải dùng mảng 2 chiều để giải, nên ct phải có cả mảng ngang và mảng dọc mới tạo được mảng 2 chiều, dùng cả 2 tranpose hoặc cả 2 không dùng transpose thì giống tương tự công thức của bạn làm ở trên sẽ bị lỗi, vì cùng đều là mảng ngang hoặc mảng dọc!!!
Bạn có thể đọc bài mảng 2 chiều ở đây mình có ví dụ 1 bài tương tự như bài có bạn, và giải thích:
http://www.giaiphapexcel.com/forum/showthread.php?122685-Đố-vui-về-công-thức-mảng-2-chiều!!/page6
Bài #53, khúc nói về mảnh 2 chiều!!!
Hi vọng giúp được bạn!!!

Rất chu đáo và chi tiết, tôi sẽ cố gắng.
eke_rula cho mình hỏi thêm đối với bài toán có dấu hiệu nhận biết như thé nào nào thì dùng mảng 2 chiều?

Cảm ơn bạn nhiều.
 
Lần chỉnh sửa cuối:
Xin chào các bạn,
Tôi sử dụng hàm SUMIFS cho trường hợp trong file đính kèm thì bị lỗi.
Nhờ các bạn sửa giúp ạ.
Cảm ơn
 

File đính kèm

Xin chào các bạn,
Tôi sử dụng hàm SUMIFS cho trường hợp trong file đính kèm thì bị lỗi.
Nhờ các bạn sửa giúp ạ.
Cảm ơn

Thử công thức này.
Nếu cột D chỉ trong 1 năm:
PHP:
L6=SUMPRODUCT((MONTH($D$6:$D$22)=MONTH($K6))*($E$6:$E$22=L$5)*($F$6:$I$22))
Nếu cột D có nhiều năm thì:
PHP:
L6=SUMPRODUCT((MONTH($D$6:$D$22)=MONTH($K6))*(YEAR($D$6:$D$22)=YEAR($K6))*($E$6:$E$22=L$5)*($F$6:$I$22))
 
Thử công thức này.
Nếu cột D chỉ trong 1 năm:
PHP:
L6=SUMPRODUCT((MONTH($D$6:$D$22)=MONTH($K6))*($E$6:$E$22=L$5)*($F$6:$I$22))
Nếu cột D có nhiều năm thì:
PHP:
L6=SUMPRODUCT((MONTH($D$6:$D$22)=MONTH($K6))*(YEAR($D$6:$D$22)=YEAR($K6))*($E$6:$E$22=L$5)*($F$6:$I$22))

Cảm ơn Ba Tê đã giúp đỡ:
Tôi xin lỗi vì chưa nêu rõ vấn đề nên công thức trên của bạn tôi chưa thể tự sửa theo ý mình được, tôi muốn sử dụng công thức giống như bài 8 của bạn:
http://www.giaiphapexcel.com/forum/...Tính-tổng-nhiều-điều-kiện&p=767803#post767803

Để có thể lấy số liệu từ 1 thời điểm đến 1 thời điểm.
Bạn xem lại file kèm và giúp tôi nhé.
Cảm ơn
 

File đính kèm

Cảm ơn Ba Tê đã giúp đỡ:
Tôi xin lỗi vì chưa nêu rõ vấn đề nên công thức trên của bạn tôi chưa thể tự sửa theo ý mình được, tôi muốn sử dụng công thức giống như bài 8 của bạn:
http://www.giaiphapexcel.com/forum/...Tính-tổng-nhiều-điều-kiện&p=767803#post767803

Để có thể lấy số liệu từ 1 thời điểm đến 1 thời điểm.
Bạn xem lại file kèm và giúp tôi nhé.
Cảm ơn
theo dữ liệu file của bạn
Mã:
M6 =SUMPRODUCT(($E$6:$E$22=M$5)*($D$6:$D$22>=$K6)*($D$6:$D$22<=EOMONTH($L6,0))*($F$6:$F$22+$G$6:$G$22+$H$6:$H$22+$I$6:$I$22))
copy cho các ô khác
 

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

Back
Top Bottom