Nhờ giúp đỡ code tự động tạo công thức tính tổng trong VBA

Liên hệ QC

yeuthamhangxom

Thành viên tiêu biểu
Tham gia
26/10/07
Bài viết
517
Được thích
419
Nghề nghiệp
Nhân viên văn phòng
Gửi các anh chị GPE.
Em có câu hỏi về tự động tạo công thức tính tổng bằng VBA như file đính kèm. Nhờ các anh chị giúp đỡ em.
Xin cám ơn rất nhiều.
 

File đính kèm

TO: HYen17
Nếu như phía dưới ô mình vừa tính tổng không có số liệu (Tức ta không nhập số liệu vào dòng phía dưới) thì khi bấm nút tính tổng thì nó vẫn không tính thêm nữa được không?
Còn nếu có số liệu thì vẫn tính bình thường.
Bạn xem bổ sung thêm code nhé!
 
Upvote 0
Ở đây có 2 vấn đề sảy ra, đó là:

Nếu như phía dưới ô mình vừa tính tổng không có số liệu (Tức ta không nhập số liệu vào dòng phía dưới) thì khi bấm nút tính tổng thì nó vẫn không tính thêm nữa được không?
Còn nếu có số liệu thì vẫn tính bình thường.
Bạn xem bổ sung thêm code nhé!
(*) Người nhập vì lí do nào đó nhập số 0 vô một trong các cột sản lượng ở Sheet2 & nhấn {ENTER}
Khi đó macro của tác giả topic cũng vẫn đem dữ liệu ảo này sang Sheet3;
Để ngăn ngừa trường hợp này, có lẽ ta phải thêm vô 1 dòng lệnh trong:

Mã:
[COLOR=Gray][B]Private Sub Worksheet_Change(ByVal Target As Range)[/B]
    Dim ECll As Range[/COLOR]
    If Target.Value = "" Or Target.Value = 0 Then Exit Sub
[COLOR=Gray]    If Intersect(Target, Union([g:g], [m:m], [s:s], [y:y], [ae:ae])) Is Nothing Or _
       WorksheetFunction.CountA(Target) = 0 Then Exit Sub
    Set ECll = Sheet3.[F6000].End(xlUp)(2).Offset(, -4)
    With Sheet3.Range(ECll.Address)
        .Resize(, 3) = Target(1, -3).Resize(, 3).Value
        .Offset(, 3) = Target
        .Offset(, 4) = "=if(rc[-2]=0,0,rc[-2]*rc[-1])"
    End With
[B]End Sub[/B][/COLOR]
(*) Cũng do ngứa tay, người nhập có thể bấm nhiều lần vô cái nút 'TinhTong';
Khi đó ta phải thêm dòng lệnh sau vô macro

Mã:
[COLOR=Gray]Option Explicit
[B]Private Sub CommandButton1_Click()[/B]
 Dim Sh As Worksheet, rW As Long, eRw As Long
 
 Set Sh = Sheet3
 eRw = Sh.[F65500].End(xlUp).Row
 With Sh.Cells(eRw, "D")[/COLOR]
   If .Value = "" Or .Offset(, 1).Value = "" Then Exit Sub
 [COLOR=Gray]  If .Offset(-1).Value = "" Then
      rW = 1
   Else
      rW = eRw - .End(xlUp).Row + 1
   End If
 End With
 With Sh.Cells(eRw, "F").Offset(1)
   .FormulaR1C1 = "=SUM(R[-" & rW & "]C:R[-1]C)"
   .Font.Bold = True
 End With
[B]End Sub[/B][/COLOR]
 
Upvote 0
Chào các anh chị,
Mình xin phép hỏi trong bài viết này, anh chị giúp mình với theo file kèm.
Code mình sửa từ bạn ChanhTQ@
Nếu mình muốn kết quả cộng tổng hiện ra tại ô L6 thì sửa như thế nào ah?
Còn nếu không dùng code mà dùng 1 công thức tại ô L6 thì có công thức nào không ạ? (thêm dòng cuối list vẫn cộng tự động)
 

File đính kèm

Upvote 0
Nếu mình muốn kết quả cộng tổng hiện ra tại ô L6 thì sửa như thế nào ah? (1)
Còn nếu không dùng code mà dùng 1 công thức tại ô L6 thì có công thức nào không ạ? (thêm dòng cuối list vẫn cộng tự động) (2)
(1) Sửa xong bạn sẽ hỏi có cách nào xóa dòng 7 mà không bị lỗi. (tôi đọc code rồi)
(2) Công thức thì cả chục công thức bên chủ đề bên kia, bạn đều chê, trừ 1 công thức bạn khen tuyệt vời, mà vẫn cứ muốn xóa dòng 3.
 
Upvote 0
Web KT

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

Back
Top Bottom