Bài bạn sẽ được giải đáp nhanh hơn khi bạn gửi file có dữ liệu sẵn để mọi người chỉ việc tải về, viết công thức rồi tải lên lại thôi.Chào GPE !
Mình cần 1 hàm cộng sum với điều kiện là không trùng cột thời gian. Nếu trùng lấy dòng trên cùng. Xin cảm ơn.
View attachment 257668
Đây là cách của mình, bạn có thể tham khảo thêm nha.Chào GPE !
Mình cần 1 hàm cộng sum với điều kiện là không trùng cột thời gian. Nếu trùng lấy dòng trên cùng. Xin cảm ơn.
View attachment 257668
ThửChào GPE !
Mình cần 1 hàm cộng sum với điều kiện là không trùng cột thời gian. Nếu trùng lấy dòng trên cùng. Xin cảm ơn.
View attachment 257668
=SUMPRODUCT((MATCH(C5:C14,C5:C14,0)=ROW(1:10))*D5:D14)
Em thử dùm thớt được luôn anh ơi. Ngắn gọn, hay quá xá!Thử
Mã:=SUMPRODUCT((MATCH(C5:C14,C5:C14,0)=ROW(1:10))*D5:D14)
Cộng không trùng cách làm tương tự đếm không trùng có nhiều trên diễn đànEm thử dùm thớt được luôn anh ơi. Ngắn gọn, hay quá xá!
Em không hiểu sao anh nghĩ ra được giải thuật đoạn Match...=Row... luôn, hay ghê. Vậy là vùng Match có bao nhiêu dòng thì bên mảng Row sẽ cho chạy từ 1 đến bấy nhiêu. Em thua, hôm qua giờ xài Sumproduct+Countif+Subtotal mà không ra quài, không hiểu.
View attachment 257690
Điều kiện: Cột thời gian phải sắp xếp.Thử thế này xem:
Mã:=SUM((C4:C13<>C5:C14)*D5:D14)
Cái này lấy dòng cuối mà không phải dòng đầuThử thế này xem:
Mã:=SUM((C4:C13<>C5:C14)*D5:D14)
hàm mảng mà CSEEm thử nó ra 0 anh ơi.
Nãy là em có thử luôn rồi á, nó cũng ra 0 á anh.hàm mảng mà CSE
Nãy là em có thử luôn rồi á, nó cũng ra 0 á anh.
Nhưng em có đọc đâu đó là hàm SUM đâu cần CSE đâu anh. Nó là hàm mảng sẵn rồi đúng không?!
nhìn lại công thức trong điều kiện <> là đang lệch một dòng đấy không phải cùng dòng đâu C4:C13<>C5:C14
Ơ, bài #9 em copy y chang công thức của anh @dazkangel luôn á, lệch 1 dòng. Ra 0 á anh.nhìn lại công thức trong điều kiện <> là đang lệch một dòng đấy không phải cùng dòng đâu C4:C13<>C5:C14
chụp cái hình lên mới biết sai ở đâulệch 1 dòng
Điều kiện: Cột thời gian phải sắp xếp.
À, em CSE nó ra kết quả rồi. Nhưng, đúng như bác @phuocam nói, phải sort trước mới được á anh, của anh sort rồi nên mới được á. Của em nó tính luôn ô D13 nè:chụp cái hình lên mới biết sai ở đâu
Haha vậy chắc hiểu nhầm ý thớt.Ơ, bài #9 em copy y chang công thức của anh @dazkangel luôn á, lệch 1 dòng. Ra 0 á anh.
Mà thớt đâu rồi anh nhỉ? Bứt tốc mất tăm hơi rồi chăng? Nhanh quá.![]()
Bạn tham khảo thêm vba:
Option Explicit
Public Function sum_sum(rng As Range)
Dim dic As Scripting.Dictionary, sKey As Variant, r As Long, k As Long, a
Set dic = New Scripting.Dictionary: a = rng.Value2
For r = 1 To UBound(a, 1)
sKey = a(r, 1)
If Not dic.Exists(sKey) And Not IsEmpty(sKey) Then
dic.Add sKey, a(r, 2)
sum_sum = sum_sum + a(r, 2)
End If
Next r
End Function
F5=sum_sum(C5:D13)
Hỏi nhưng không đưa file kèm, anh em giúp rồi lại trở quẻ thêm thắt điều nọ kia.
Cảm ơn bạn. Code báo lổi. Với lại ví dụ có 1 cột trống ở giữa thì sửa công thức ra làm sao.Bạn tham khảo thêm vba:
Mã:Option Explicit Public Function sum_sum(rng As Range) Dim dic As Scripting.Dictionary, sKey As Variant, r As Long, k As Long, a Set dic = New Scripting.Dictionary: a = rng.Value2 For r = 1 To UBound(a, 1) sKey = a(r, 1) If Not dic.Exists(sKey) And Not IsEmpty(sKey) Then dic.Add sKey, a(r, 2) sum_sum = sum_sum + a(r, 2) End If Next r End Function
Công thức:
Mã:F5=sum_sum(C5:D13)
Bạn có thể đính kèm file lên đây được không OT thử không có lỗi :Cảm ơn bạn. Code báo lổi. Với lại ví dụ có 1 cột trống ở giữa thì sửa công thức ra làm sao.
View attachment 257748
Nếu chèn 1 cột ở giữa thì sửa công thức ra làm sao. Sao bạn không thiết kế cấu trúc như vầy =Sum_Sum( cột điều kiện, Cột Giá trị ) để cho người dùng tủy biến tùy ý
View attachment 257747
Nếu chèn 1 cột ở giữa thì sửa công thức ra làm sao. Sao bạn không thiết kế cấu trúc như vầy =Sum_Sum( cột điều kiện, Cột Giá trị ) để cho người dùng tủy biến tùy ý
View attachment 257747
Bài đã được tự động gộp:
Mình xin gửi Lại file
View attachment 257753
Option Explicit
Public Function sum_sum(rng As Range, i As Integer)
Dim dic As Scripting.Dictionary, sKey As Variant, r As Long, k As Long, a
Set dic = New Scripting.Dictionary: a = rng.Value2
For r = 1 To UBound(a, 1)
sKey = a(r, 1)
If Not dic.Exists(sKey) And Not IsEmpty(sKey) Then
dic.Add sKey, a(r, i)
sum_sum = sum_sum + a(r, i)
End If
Next r
End Function
F5=sum_sum(C5:D18,2)
Rồi 2 cột đó nằm xa ra thì làm saoBạn có thể đính kèm file lên đây được không OT thử không có lỗi :
View attachment 257755
Bài đã được tự động gộp:
Mã:Option Explicit Public Function sum_sum(rng As Range, i As Integer) Dim dic As Scripting.Dictionary, sKey As Variant, r As Long, k As Long, a Set dic = New Scripting.Dictionary: a = rng.Value2 For r = 1 To UBound(a, 1) sKey = a(r, 1) If Not dic.Exists(sKey) And Not IsEmpty(sKey) Then dic.Add sKey, a(r, i) sum_sum = sum_sum + a(r, i) End If Next r End Function
Mã:F5=sum_sum(C5:D18,2)
Híc @@, dù được hay không thì mình cũng xin phép ...
Quá đơn giản [sic]. Lúc dùng hàm VLookup thì làm sao?Rồi 2 cột đó nằm xa ra thì làm sao
...
Con chào Bác,Quá đơn giản [sic]. Lúc dùng hàm VLookup thì làm sao?
Viết một hàm baoCon chào Bác,
Bác ơi, nếu mà đi tiếp thì cũng có thể còn như là nếu cột giá trị nó nằm bên trái thì làm sao?... nên con xin phép rút sớm Bác ạ.
Viết hàm nhận hai đối số là hai vùng riêng biệt, như hàm sumif ấy, có vùng điều kiện và vùng tính tổng.nếu cột giá trị nó nằm bên trái thì làm sao
Làm vầy ổn không anh:Hỏi nhưng không đưa file kèm, anh em giúp rồi lại trở quẻ thêm thắt điều nọ kia.
Tôi có công thức cũng gọn gàng thôi, loại bỏ trùng lắp và chấp bạn có thêm 100 dòng trống nữa cũng cộng ra kết quả, nhưng tôi chỉ dành công thức này cho mấy anh em cần tham khảo học hỏi chân thành thôi, vì tôi thấy bạn chả thiết đến nữa.
Vậy nha.
=SUMPRODUCT(VLOOKUP(C5:C18,--C5:D18,2,0)/COUNTIF(C5:C18,C5:C18&""))
Ổn em trai! Rất sáng tạo!Làm vầy ổn không anh:
Mã:=SUMPRODUCT(VLOOKUP(C5:C18,--C5:D18,2,0)/COUNTIF(C5:C18,C5:C18&""))
Bỏ bớt 0 trong Match():Trên máy mình kết quả hơi lạ
Kết quả tính trực tiếp ô F7 = 6
Nếu tính gián tiếp qua E5:E18 thì F8 = 26
View attachment 257784
Dùng hàm Match
=SUMPRODUCT((MATCH(C5:C104&"",C5:C104&"",0)=ROW(1:100))*D5104)
Của em nó bỏ qua số 0 ở countif rồi mà, còn thiếu xót chỗ nào nhỉ ?Ổn em trai! Rất sáng tạo!
Nhưng ứng phó với sự 'tư duy trước 100 năm' như anh Vẹt cảnh báo, thì em chịu khó thêm thắt trường hợp ô giờ báo lỗi, tỷ như 1/0 chẳng hạn, rồi xử lý luôn.
Giải pháp của anh chắc em biết, thay vì dùng cột phụ đếm số thứ tự xuất hiện, rồi chọn giá trị 1 xuất hiện đầu tiên, anh 'chơi' thành 1 mảng luôn. Đảm bảo ngắn hơn em chút chíu hà. Lại xử đẹp ô báo lỗi như trên anh đề cập.
Chúc em ngày vui.
![]()
Nếu bạn đọc thớt bên kia sẽ thấy cái này là cái mà thớt đòi.Viết hàm nhận hai đối số là hai vùng riêng biệt, như hàm sumif ấy, có vùng điều kiện và vùng tính tổng.
...
Ngoài ra còn có thể ở sheets khác, file khác nữa bạn nhỉ.Con chào Bác,
Bác ơi, nếu mà đi tiếp thì cũng có thể còn như là nếu cột giá trị nó nằm bên trái thì làm sao?... nên con xin phép rút sớm Bác ạ.
Nếu bạn biết cách suy nghĩ của đầu óc đi trước thời đại 100 năm, sẽ biết điều này không xảy ra.Ngoài ra còn có thể ở sheets khác, file khác nữa bạn nhỉ.
Không không! so với yêu cầu của thớt thì công thức của em không thiếu sót gì cả, anh thích công thức của em phá cách không như thường lệ. Anh chỉ quậy quọ thêm trường hợp cột giờ vô duyên vô cớ có ô chứa lỗi #DIV/0 để anh em mình gẫm thôi. Chuyện nhỏ như con thỏ em!Của em nó bỏ qua số 0 ở countif rồi mà, còn thiếu xót chỗ nào nhỉ ?
Kết quả sai rồi Bác nhéLàm vầy ổn không anh:
Mã:=SUMPRODUCT(VLOOKUP(C5:C18,--C5:D18,2,0)/COUNTIF(C5:C18,C5:C18&""))
Bạn không nằm trong danh sách "VIP ca ca" (*1). Công thức của bạn sẽ rất nhiều khả năng nhận được một câu cộc lốc. Nếu câu trả lời không chứa nghĩa "kém cỏi, non tay" là đã may lắm rồi.Làm vầy ổn không anh:
Mã:=SUMPRODUCT(VLOOKUP(C5:C18,--C5:D18,2,0)/COUNTIF(C5:C18,C5:C18&""))
Không sao anh ạ, em làm để mấy anh em xem có hợp lý không thôiBạn không nằm trong danh sách "VIP ca ca" (*1). Công thức của bạn sẽ rất nhiều khả năng nhận được một câu cộc lốc. Nếu câu trả lời không chứa nghĩa "kém cỏi, non tay" là đã may lắm rồi.
(*1): nếu bạn biết người thì cứ lục tìm mấy cái thớt cũ, sẽ có bài tôi giải thích về danh sách 1, 2, 3 của thớt.
Rất hợp với záng em 'í'!Em hơi vô duyên tí nhưng dùng Dax được không nhỉ:
Sum_distinct = SUMX(DISTINCT(Tab[Thời Gian]), FIRSTNONBLANK(tab[Giá trị], 0))
![]()
Ý mình là dùng Dax thì có hợp với thớt này không, có vô duyên không ý, bác cứ hiểu lầm thế chết!Rất hợp với záng em 'í'!![]()
"em í" = "thớt"Ý mình là dùng Dax thì có hợp với thớt này không, có vô duyên không ý, bác cứ hiểu lầm thế chết!
Bạn lập một file với chừng 20 dòng dữ liệu, 2 hoạc 3 cột giá trị (dùng để thử trường hợp cột nằm tùm lum - đọc diều kiện bài #21) đắc điếc gì đó cứ chêm vào và gởi lên đây. Hễ tét ra kết quả đúng là thớt sẽ hoan nghênh (và bạn có khả năng hân hạn vào danh sách Vi-Ai_Pi của thớt)Em hơi vô duyên tí nhưng dùng Dax được không nhỉ:
Sum_distinct = SUMX(DISTINCT(Tab[Thời Gian]), FIRSTNONBLANK(tab[Giá trị], 0))
![]()
Em mới coi lại #21 của thớt, bao la thế đúng là em chịu, trình độ của em chưa theo được.Bạn lập một file với chừng 20 dòng dữ liệu, 2 hoạc 3 cột giá trị (dùng để thử trường hợp cột nằm tùm lum - đọc diều kiện bài #21) đắc điếc gì đó cứ chêm vào và gởi lên đây. Hễ tét ra kết quả đúng là thớt sẽ hoan nghênh (và bạn có khả năng hân hạn vào danh sách Vi-Ai_Pi của thớt)