Tạo công thức tính tổng từ hàng cuối có dữ liệu đến hàng sau hàng chứa công thức

  • Thread starter Thread starter chudaosi
  • Ngày gửi Ngày gửi
Liên hệ QC

chudaosi

Thành viên mới
Tham gia
27/1/10
Bài viết
14
Được thích
0
Em có 1 file như file đính kèm, em muốn tạo 1 công thức tính tổng tự động từ hàng cuối cùng có dữ liệu đến hàng ngay sau hàng có công thức ở trên để thay thế hàm SUM vì hàm SUM vẫn phải tìm xem hàng có dữ liệu cuối cùng rồi hàng sau hàng có công thức nên hơi mất thời gian. Em nghĩ chắc phải làm bằng VBA nhưng lại không biết viết. Các anh chị giúp giùm em với.
 

File đính kèm

Em có 1 file như file đính kèm, em muốn tạo 1 công thức tính tổng tự động từ hàng cuối cùng có dữ liệu đến hàng ngay sau hàng có công thức ở trên để thay thế hàm SUM vì hàm SUM vẫn phải tìm xem hàng có dữ liệu cuối cùng rồi hàng sau hàng có công thức nên hơi mất thời gian. Em nghĩ chắc phải làm bằng VBA nhưng lại không biết viết. Các anh chị giúp giùm em với.
file này có đúng theo ý bạn không
nếu đúng thì bạn nên dùng subtotal
 

File đính kèm

file này có đúng theo ý bạn không
nếu đúng thì bạn nên dùng subtotal
Cám ơn anh. Dùng chức năng subtotal thì cũng như dùng sum trong trường hợp này của em vì file này em cập nhật dữ liệu liên tục nên em mới muốn công thức tính tổng tự động.
 
Cám ơn anh. Dùng chức năng subtotal thì cũng như dùng sum trong trường hợp này của em vì file này em cập nhật dữ liệu liên tục nên em mới muốn công thức tính tổng tự động.
nếu bạn cập nhật thường xuyên vậy thì bạn cũng phải chèn thềm hàng vào từng nơi phải không? Nếu đúng như vậy thì Subtotal vẫn đáp ứng tốt cho bạn mà
 
nếu bạn cập nhật thường xuyên vậy thì bạn cũng phải chèn thềm hàng vào từng nơi phải không? Nếu đúng như vậy thì Subtotal vẫn đáp ứng tốt cho bạn mà
Subtotal hay SUM vẫn đáp ứng cho em nhưng cái em đang muốn làm là tự động để đỡ mất thời gian thôi. Chứ cứ lặp lại thao tác ghi công thức SUM rồi sửa lại địa chỉ range hay cứ phải vào Data->Subtotal... thì đơn điệu và mất thời gian 1 chút.
 
Subtotal hay SUM vẫn đáp ứng cho em nhưng cái em đang muốn làm là tự động để đỡ mất thời gian thôi. Chứ cứ lặp lại thao tác ghi công thức SUM rồi sửa lại địa chỉ range hay cứ phải vào Data->Subtotal... thì đơn điệu và mất thời gian 1 chút.
bạn đâu cần chọn lại Data->Subtotal tự động nó cập nhật cho bạn luôn mà, bạn cứ thử đi là biết
 
bạn đâu cần chọn lại Data->Subtotal tự động nó cập nhật cho bạn luôn mà, bạn cứ thử đi là biết
Em đang sử dụng Excel 2003, chức năng mà anh nói em không thấy hiện hữu. Với lại Subtotal chèn thêm dòng Grand Total không cần thiết trong trường hợp của em nên em không thích dùng. Em thấy sử dụng hàm SUM là được rồi nhưng em đang muốn làm công việc cho nó tự động 1 chút để đỡ mất thời gian.
 
Em có 1 file như file đính kèm, em muốn tạo 1 công thức tính tổng tự động từ hàng cuối cùng có dữ liệu đến hàng ngay sau hàng có công thức ở trên để thay thế hàm SUM vì hàm SUM vẫn phải tìm xem hàng có dữ liệu cuối cùng rồi hàng sau hàng có công thức nên hơi mất thời gian. Em nghĩ chắc phải làm bằng VBA nhưng lại không biết viết. Các anh chị giúp giùm em với.
Bạn thử công thức này nhé;
 

File đính kèm

Bạn thử công thức này nhé;
Công thức mảng của sư huynh tuy phải thêm 1 cột phụ nhưng giải quyết quá tốt yêu cầu của em. Em thấy bỏ phần kiểm tra if(iserror(...)) đi thì công thức mới đúng vì cũng có lúc dữ liệu rỗng. Nếu để nguyên thì khi có empty cell, công thức của sư huynh sẽ SUM từ đầu cột xuống tới cell hiện tại.
 
Em có 1 file như file đính kèm, em muốn tạo 1 công thức tính tổng tự động từ hàng cuối cùng có dữ liệu đến hàng ngay sau hàng có công thức ở trên để thay thế hàm SUM vì hàm SUM vẫn phải tìm xem hàng có dữ liệu cuối cùng rồi hàng sau hàng có công thức nên hơi mất thời gian. Em nghĩ chắc phải làm bằng VBA nhưng lại không biết viết. Các anh chị giúp giùm em với.
Trường hợp của bạn dùng chức năng Auto Sum cho nó khỏe:
- AutoFilter
- Lọc ra và chọn những ô cần tính tổng
- Bỏ AutoFilter
- Nhấn tổ hợp phím Alt + =
Hoặc nếu bạn muốn dùng công thức thì thử công thức này xem:
Mã:
D7=SUBTOTAL(9,$D$1:D6)*2-SUM($D$1:D6)
Copy công thức cho các ô còn lại.
 
Công thức mảng của sư huynh tuy phải thêm 1 cột phụ nhưng giải quyết quá tốt yêu cầu của em. Em thấy bỏ phần kiểm tra if(iserror(...)) đi thì công thức mới đúng vì cũng có lúc dữ liệu rỗng. Nếu để nguyên thì khi có empty cell, công thức của sư huynh sẽ SUM từ đầu cột xuống tới cell hiện tại.
Cột phụ nào nhỉ, bạn đang nói đến cột có chữ TỔNG phải không? nếu k có cột đó thì sửa lại 1 chút, mình tưởng kết cấu bảng có sẵn như vậy rồi.
 
Mình thường mở thêm cột Sum tổng ở cột kế bên số liệu, cách này chỉ thao tác 1 lần:
Bạn insert thêm dòng trên cùng làm tiêu đề, tại ô E2:
=IF(LEFT(A2,3)="Đợt",SUM($D$2:D2)-SUM($E$1:E1),"")
 
Mình thường mở thêm cột Sum tổng ở cột kế bên số liệu, cách này chỉ thao tác 1 lần:
Bạn insert thêm dòng trên cùng làm tiêu đề, tại ô E2:
Công thức của sư huynh đơn giản và dễ hiểu nhưng chỉ sum được cho 1 cột thôi, muốn sum cho 1 cột khác thì lại phải tạo thêm 1 cột phụ nữa. Tính ra có bao nhiêu cột cần tính tổng thì cần bấy nhiêu cột phụ.
 
Trường hợp của bạn dùng chức năng Auto Sum cho nó khỏe:
- AutoFilter
- Lọc ra và chọn những ô cần tính tổng
- Bỏ AutoFilter
- Nhấn tổ hợp phím Alt + =
Hoặc nếu bạn muốn dùng công thức thì thử công thức này xem:
Mã:
D7=SUBTOTAL(9,$D$1:D6)*2-SUM($D$1:D6)
Copy công thức cho các ô còn lại.
Anh hiểu lầm ý em rồi. Em chỉ cần sum 1 vùng nhỏ thôi, chứ không phải sum từ đầu đến cuối.
 
Anh hiểu lầm ý em rồi. Em chỉ cần sum 1 vùng nhỏ thôi, chứ không phải sum từ đầu đến cuối.
Bạn đang nói đến cách dùng Auto Sum hay là dùng công thức? Cách nào cũng tính sum từng vùng nhỏ cả. Bạn đã thử chưa?
 
Bạn đang nói đến cách dùng Auto Sum hay là dùng công thức? Cách nào cũng tính sum từng vùng nhỏ cả. Bạn đã thử chưa?
Em đã thử công thức của anh rồi. Sorry. Do em chưa chỉnh lại từ đầu. Công thức của anh đúng nhưng có 1 bất tiện nhỏ là khi Auto Filter thì kết quả là số âm.
 
Anh hiểu lầm ý em rồi. Em chỉ cần sum 1 vùng nhỏ thôi, chứ không phải sum từ đầu đến cuối.
Tôi nghĩ Bạn muốn gần giống như thế này, tôi không rành VBA lắm nên phải làm rườm rà thêm cột phụ rồi Record Macro.
Nếu Bạn muốn đúng như vậy thì lên tiếng, sẽ có nhiều người viết Code ngắn gọn hơn cho Bạn.
 

File đính kèm

Em đã thử công thức của anh rồi. Sorry. Do em chưa chỉnh lại từ đầu. Công thức của anh đúng nhưng có 1 bất tiện nhỏ là khi Auto Filter thì kết quả là số âm.
Vậy thì bạn làm theo cách dùng Auto Sum đi. Nhẹ nhàng, đơn giản. Chỉ cần vài thao tác là xong.
 
Các bài tổng con nói nhiều trên diễn đàn rồi, có nhiều cách làm, cách làm.....biếng nhất là dùng code
Tham gia một cách làm để ôn bài luôn, khỏi quên
Mã:
Public Sub TongCon()
    Dim Vung, Cll, iDau, iCuoi, Tong, I, K
    Set Vung = Range([b1], [b1000].End(xlUp))
    iDau = 1
        For Each Cll In Vung
            If Cll <> vbNullString Then
                iCuoi = Cll.Row - 1
                With Cll
                    .Offset(, 1).Formula = "=SUM(" & Cells(iDau, 3).Address & ":" & Cells(iCuoi, 3).Address & ")"
                    .Offset(, 2).Formula = "=SUM(" & Cells(iDau, 4).Address & ":" & Cells(iCuoi, 4).Address & ")"
                End With
                    With Cll.Offset(, 1).Resize(, 2)
                        .Font.Bold = True
                        .Font.ColorIndex = 3
                    End With
                        iDau = iCuoi + 2
            End If
        Next
End Sub
Có sửa đổi thêm bớt dữ liệu xong cứ "phang" vào cái nút một nhát
 

File đính kèm

Web KT

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

Back
Top Bottom