Ví dụ như hình dưới
Những ô màu vàng là ô trống , sau đó kết quả tổng được chèn vào .
Tuy nhiên giải pháp trên là rất khó bạn phải dùng macro có nội dung như sau :
Sub InsertTotals()
Dim xRg As Range
Dim i, j, StartRow, StartCol As Integer
Dim xTxt As String
On Error Resume Next
xTxt = ActiveWindow.RangeSelection.AddressLocal
Set xRg = Application.InputBox(\"please select the cells:\", \" \", xTxt, , , , , 8)
If xRg Is Nothing Then Exit Sub
StartRow = xRg.Row
StartCol = xRg.Column
For i = StartCol To xRg.Columns.Count + StartCol - 1
For j = xRg.Row To xRg.Rows.Count + StartRow - 1
If Cells(j, i) = \"\" Then
Cells(j, i).Formula = \"=SUM(\" & Cells(StartRow, i).Address & \":\" & Cells(j - 1, i).Address & \")\"
StartRow = j + 1
End If
Next
StartRow = xRg.Row
Next
End Sub
Khi chạy macro này bạn sẽ được yêu cầu chọn khu vực dữ liệu muốn tính
Khi ấy bạn sẽ được kết quả như hình dưới
Bạn cũng có thể có một giải pháp khác như hình dưới với công thức mảng và kết quả trả về cột bên cạnh
Với công thức mảng
=IF(D1=\"\",SUM(D1:INDEX(D1:$D$17,MATCH(TRUE,(D2:$D$17=\"\"),0))),\"\")
Rồi bấm tổ hợp phím Ctrl+Shift+Enter để thành công thức mảng rồi dùng tính năng Fill_Hand để kéo
Với công thức trên D1 và D2 là hai ô đầu tiên của cột và D17 là ô trống cuối cùng trong cột số .