Tính tổng của 4 hàng chỉ lấy giá trị lớn hơn hoặc bằng 2 (1 người xem)

Liên hệ QC

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

sep_hatxel

Thành viên thường trực
Tham gia
24/5/10
Bài viết
217
Được thích
7
Mình có bảng tính mong GPE giúp đỡ macro cách tính tổng 4 hàng liên tiếp chỉ lấy giá trị lớn hơn hoặc bằng 2. Xin chân thành cảm ơn!
 

File đính kèm

Tại sao lại macro mà không dùng formula?
 
Mình có bảng tính mong GPE giúp đỡ macro cách tính tổng 4 hàng liên tiếp chỉ lấy giá trị lớn hơn hoặc bằng 2. Xin chân thành cảm ơn!

chào bạn,

bạn đã chuẩn bị khá chu đáo về phần số liệu, mình thấy với cách bố trí như vậy thì việc dùng hàm thông thường cũng ra kết quả + đơn giản hơn nhiều, sao lại phải dùng Macro (có lẽ bạn còn đkiện nào khác nữa sao :-=)

'- - -
Chúc 1 ngày tốt lành !
 
Mã:
Sub t()
Const DONGTONG = 5 ' dòng để ghi tổng
Const COTCUOI = 40 ' cột cuối
For dtong = DONGTONG To 65000 Step DONGTONG ' tính từng dòng tổng
    If Cells(dtong, 1).Value = "" Then Exit For ' hết dữ liệu
    For cot = 2 To COTCUOI
        tong = 0
        dem = 0
        For dDem = 1 To DONGTONG  -1 ' lấy tổng từng ô, đồng thời đếm sô ô có dữ liệu
            If Cells(dtong - dDem, cot) <> "" Then
            tong = tong + Cells(dtong - dDem, cot)
            dem = dem + 1
            End If
        Next dDem
        If dem >= 2 Then Cells(dtong, cot) = tong
    Next cot
Next dtong
End Sub

Công thức:
=IF(COUNTA(B1:B4)>=2,SUM(B1:B4),"")

Rõ ràng là công thức khoẻ ru!
 
Hình như công thức này "tèo"
Nhìn kết quả ở [F10], [Z25]
Híc

Theo tôi hiểu, chủ thớt nói "lớn hơn hoặc bằng 2" có nghĩa là có ít nhất 2 ô có trị số. Đương nhiên diễn tả kiểu chủ thớt (cũng như 99% các bài hỏi trên diễn đàn này) thì chỉ có thánh mới dám đánh cá rằng mình hiểu đúng.
 
Theo tôi hiểu, chủ thớt nói "lớn hơn hoặc bằng 2" có nghĩa là có ít nhất 2 ô có trị số. Đương nhiên diễn tả kiểu chủ thớt (cũng như 99% các bài hỏi trên diễn đàn này) thì chỉ có thánh mới dám đánh cá rằng mình hiểu đúng.

Theo mình hiểu thì cộng 4 ô liên tiếp, nếu giá trị cho ra>=2 thì lấy ngược lại bỏ đi.
 
Tôi nhớ có một nơi có trị 2 mà không lấy nên kết luận như trên. Sau khi xem lại thì không tìm ra chỗ đó nữa. Té ra mình quáng gà!!!
 
Vâng! Cảm ơn các bạn đã quan tâm! Điều kiện đúng như ý của bạn hngiatuong hiểu đó ạ!

??? liên tiếp ở đây hiểu thế nào

sao không dùng công thức sau cho B5
=IF(SUM(B1:B4)>=2;SUM(B1:B4);"")

Copy cho tất cả các ô tô vàng là xong,

nhưng thế thì lạ quá, tại sao đơn giản vậy lại y.c macro??? hay là KHÁC???
 
??? liên tiếp ở đây hiểu thế nào

sao không dùng công thức sau cho B5
=IF(SUM(B1:B4)>=2;SUM(B1:B4);"")

Copy cho tất cả các ô tô vàng là xong,

nhưng thế thì lạ quá, tại sao đơn giản vậy lại y.c macro??? hay là KHÁC???
Vâng! Tại vì thực tế bảng tính có khoảng vài nghìn trường hợp nếu coppy thì không biết bao giờ thì xong ạ? Rất cảm ơn bạn đã quan tâm!
 
Vâng! Tại vì thực tế bảng tính có khoảng vài nghìn trường hợp nếu coppy thì không biết bao giờ thì xong ạ? Rất cảm ơn bạn đã quan tâm!

Mấy ngàn là làm mấy thế nào? - mấy ngàn mà dòng trống chờ đặt sum sẵn --> filter, paste là xong

sheet gốc bạn đầu có các dòng vàng chưa???????? (tức là cứ 4 dòng có 1 dòng trống sẵn sàng cho SUM, bạn thử up lại file với 1 sheet gốc , và 1 sheet kết quả mong muốn xem sao)
 
??? liên tiếp ở đây hiểu thế nào

sao không dùng công thức sau cho B5
=IF(SUM(B1:B4)>=2;SUM(B1:B4);"")

Copy cho tất cả các ô tô vàng là xong,

nhưng thế thì lạ quá, tại sao đơn giản vậy lại y.c macro??? hay là KHÁC???
Bạn ơi! Mình dùng công thức đó nhưng không được? Bạn kiểm tra lại giúp được không? Cảm ơn bạn!
 
Bạn ơi! Mình dùng công thức đó nhưng không được? Bạn kiểm tra lại giúp được không? Cảm ơn bạn!

đổi thành
=IF(SUM(B1:B4)>=2,SUM(B1:B4),"")

xem sao???

nếu được, sau đó dùng AutoFiler lọc cột A với "Tổng....." và kéo copy B5 đó ra các ô vàng hết là xong, dù có vài ngàn dòng cũng thế
 
Mã:
Sub t()
Const DONGTONG = 5 ' dòng để ghi tổng
Const COTCUOI = 40 ' cột cuối
For dtong = DONGTONG To 65000 Step DONGTONG ' tính từng dòng tổng
    If Cells(dtong, 1).Value = "" Then Exit For ' hết dữ liệu
    For cot = 2 To COTCUOI
        tong = 0
        dem = 0
        For dDem = 1 To DONGTONG  -1 ' lấy tổng từng ô, đồng thời đếm sô ô có dữ liệu
            If Cells(dtong - dDem, cot) <> "" Then
            tong = tong + Cells(dtong - dDem, cot)
            dem = dem + 1
            End If
        Next dDem
        If dem >= 2 Then Cells(dtong, cot) = tong
    Next cot
Next dtong
End Sub

Công thức:
=IF(COUNTA(B1:B4)>=2,SUM(B1:B4),"")

Rõ ràng là công thức khoẻ ru!
Bạn VetMini ơi! Bạn có thể giúp mình lại về phần macro cho bài này không? Khi mình dùng công thức của bạn vodoi2x thì bảng tính sẽ rất nặng! Mong bạn xem giúp, cảm ơn bạn!
 
Bản tính xài bao nhiêu lần? Nếu chỉ 1 lần thì sửa nhiều mất công.
Sửa như vầy thôi:
Dòng
If dem >= 2 Then Cells(dtong, cot) = tong
Sửa thành
If tong >= 2 Then Cells(dtong, cot) = tong

tb. khuyên rằng tương lai bạn nên tìm cách làm sếp. Chứ làm nhân viên mà mới vài ngàn dòng đã sợ giải quyết thì e rằng khó thọ lâu dài.
 
Web KT

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

Back
Top Bottom