Nếu dữ liệu ít, dùng:Nhờ các bác viết giúp em 1 code tính tổng có điều kiện theo file đính kèm với ạ.
Em có 2 cột A, B. Cứ cells A (i) khác rỗng thì cells B (i) = tổng từ cells B (i + 1) cho đến cells B mà cells A khác rỗng tiếp theo trừ đi 1 dòng.
Em cám ơn nhiều!
C2=IF(A2="","",SUM(B3:$B$85)-SUM(C3:$C$85))
C2=IF(A2="","",SUM(INDEX(B3:INDEX(B3:$B$86,IFERROR(MATCH("*",A3:$A$86,)-1,)),)))
Public Sub test()
Dim i As Long, lr As Long, MyTotal As Double
lr = Range("B" & Rows.Count).End(xlUp).Row
For i = lr - 1 To 2 Step -1
If Range("A" & i) = vbEmpty Then
MyTotal = MyTotal + Range("B" & i).Value
Else
Range("B" & i) = MyTotal
MyTotal = 0
End If
Next i
End Sub
CÁM ƠN BÁC. CÔNG THỨC CỦA BÁC GIẢI QUYẾT ĐƯỢC NHU CẦU CỦA EM. NHƯNG EM CHƯA BIẾT CHUYỂN SANG CODE.Nếu dữ liệu ít, dùng:
Nếu nhiều hơn 1000 dòng, dùng:Mã:C2=IF(A2="","",SUM(B3:$B$85)-SUM(C3:$C$85))
Enter fill xuốngMã:C2=IF(A2="","",SUM(INDEX(B3:INDEX(B3:$B$86,IFERROR(MATCH("*",A3:$A$86,)-1,)),)))
Thân
Cám ơn bác nhiều ạ. Đúng cái em đang cần. Em đang học VBA, em không hiểu cái chổ này lắm MyTotal + Range("B" & i).Value. Bác giải thích giúp em được không ạ. Chổ này em hay thấy sử dụng nhưng vẫn chưa hiểu.Thử:
Mã:Public Sub test() Dim i As Long, lr As Long, MyTotal As Double lr = Range("B" & Rows.Count).End(xlUp).Row For i = lr - 1 To 2 Step -1 If Range("A" & i) = vbEmpty Then MyTotal = MyTotal + Range("B" & i).Value Else Range("B" & i) = MyTotal MyTotal = 0 End If Next i End Sub
Chắc là vầy:Cám ơn bác nhiều ạ. Đúng cái em đang cần. Em đang học VBA, em không hiểu cái chổ này lắm MyTotal + Range("B" & i).Value. Bác giải thích giúp em được không ạ. Chổ này em hay thấy sử dụng nhưng vẫn chưa hiểu.
Vâng, sau khi đọc cái giải thích của bạn xong mình vẫn không hiểu jChắc là vầy:
nều dòng i của cột A là trống thì "Cái ấy"="Cái ấy"+"Cái kia" ngược lại thì dòng i cột B ="Cái ấy" rồi cho "Cái ấy"=0 rồi tiếp tục vòng lặp
Ghi chú: "Cái ấy"="MyTotal"; "Cái kia"=Range("B" & i).Value![]()