Nhìn thế kia dùng hàm Sum là được.Bạn nên nêu rõ ra.Anh em chỉ dẫn cách tính tổng từ 1 ô đến ô có dữ liệu cuối cùng trong 1 cột
Anh em chỉ dẫn cách tính tổng từ 1 ô đến ô có dữ liệu cuối cùng trong 1 cột
=SUM(C4:INDEX(C:C,LOOKUP(10^6,C:C,ROW(C:C))))
=SUM(C4:C<số đủ lớn>)
Cảm ơn bạn!Công thức hơi dài và khó nhớ bạn àHoặc là sum cả cột tùy theo file thực tếMã:=SUM(C4:INDEX(C:C,LOOKUP(10^6,C:C,ROW(C:C))))
Cảm ơn bạn, như vậy thì không hiệu quả cho lắmThường thì bạn không nhập dữ liệu theo hứng: lúc nhập vào C10, lúc nhập vào C1000000, sau đó lại vào C500000. Vậy hãy chọn 1 con số đủ lớn, vd. 1000, 10000, 30000. Và
Và hãy quên mọi thao tác với cả cột đi.Mã:=SUM(C4:C<số đủ lớn>)
Cảm ơn bạn!Công thức hơi dài và khó nhớ bạn à
Bài đã được tự động gộp:
Cảm ơn bạn, như vậy thì không hiệu quả cho lắm
Trước tôi có đọc trên diễn đàn có dạng bài này và công thức rất ngắn gọn
Kiểu như :=SUM(C4:"C:"&?????) như nào đó???
Tôi nhớ mang máng nhưng tìm mãi không thấy đâu?
Sub subtotalFirstCell()
Dim CellTg As Range, rng As Range, lr As Long
Set CellTg = ActiveCell
Columns(CellTg.Column).Select
Set rng = Selection
lr = rng.Cells(rng.Rows.Count, 1).End(xlUp).Row
CellTg.FormulaR1C1 = "=SUBTOTAL(9,R[1]C:R[" & lr - CellTg.Row & "]C)"
CellTg.Select
End Sub
Code này là chuẩn rồi...Nếu công thức bạn đã xác định ô đầu thì công thức lookup trên là tối ưu rồi, không thì bạn ước lượng khoảng data sử dụng mà set ô cuối không thì chọn luôn ô 1,000,000 cho nhanh chứ công thức =SUM(C4:"C:"&?????) (hàm này phải thêm indirect vào không sao chạy được) làm gì? cái "?????" bạn phải dùng hàm tìm dòng của ô cuối có dữ liệu thì chả có cách nào nhanh hơn dùng lookup đâu.
Còn nếu dùng VBA thì bạn làm 1 marco dùng nhiều lần, tôi gửi bạn 1 đoạn tham khảo tự đặt tính tổng lên đầu cột của vùng cần đặt phép tinh, bạn gán vào shortcut hay 1 nút nào đó dùng cho tiện:
Mã:Sub subtotalFirstCell() Dim CellTg As Range, rng As Range, lr As Long Set CellTg = ActiveCell Columns(CellTg.Column).Select Set rng = Selection lr = rng.Cells(rng.Rows.Count, 1).End(xlUp).Row CellTg.FormulaR1C1 = "=SUBTOTAL(9,R[1]C:R[" & lr - CellTg.Row & "]C)" CellTg.Select End Sub
Function SumDown&(Rng As Range)
SumDown = Application.Sum(Range(Rng, Rng.End(xlDown)))
End Function
Dữ liệu không liên tiếp thì sao bạn.Có dùng được không.Bạn thử áp dụng Code sau
Cách dùng : =SumDown(C4)
Copy code vào một module và save thành xls / xlsm / xlsb
PHP:Function SumDown&(Rng As Range) SumDown = Application.Sum(Range(Rng, Rng.End(xlDown))) End Function
Có nhiều cách tiếp cận:Dữ liệu không liên tiếp thì sao bạn.Có dùng được không.
Function SumDown(Rng As Range)
SumDown = Application.Sum(Range(Rng, Cells(Rows.Count, Rng.Column).End(xlUp)))
End Function
Function SumDown(Rng As Range)
SumDown = Application.Sum(Range(Rng, Rng.End(xlDown)))
End Function
Function SumDown(Rng As Range)
Dim LRow As Range
Set LRow = Columns(Rng.Column).Find("*", _
LookIn:=xlFormulas, LookAt:=xlPart, _
SearchDirection:=xlPrevious, _
SearchOrder:=xlByRows, _
MatchCase:=False)
SumDown = Application.Sum(Range(Rng, LRow))
End Function
Sub HangCuoi()
Dim sht As Worksheet
Dim LastRow As Long
Set sht = ActiveSheet
LastRow = sht.Cells.SpecialCells(xlCellTypeLastCell).Row
LastRow = sht.UsedRange.Rows(sht.UsedRange.Rows.Count).Row
LastRow = sht.ListObjects("Table1").Range.Rows.Count
LastRow = sht.Range("MyNamedRange").Rows.Count
LastRow = sht.Range("A1").CurrentRegion.Rows.Count
End Sub
CẢM ƠN BẠNCó nhiều cách tiếp cận:
Cách 1: Dùng EndXL
+ xlUp: Nếu dữ liệu rời rạc
+ xlDown: nếu dữ liệu liền kềPHP:Function SumDown(Rng As Range) SumDown = Application.Sum(Range(Rng, Cells(Rows.Count, Rng.Column).End(xlUp))) End Function
Cách 2: Dùng Phương thức FindPHP:Function SumDown(Rng As Range) SumDown = Application.Sum(Range(Rng, Rng.End(xlDown))) End Function
PHP:Function SumDown(Rng As Range) Dim LRow As Range Set LRow = Columns(Rng.Column).Find("*", _ LookIn:=xlFormulas, LookAt:=xlPart, _ SearchDirection:=xlPrevious, _ SearchOrder:=xlByRows, _ MatchCase:=False) SumDown = Application.Sum(Range(Rng, LRow)) End Function
Và một số phương thức khác:
PHP:Sub HangCuoi() Dim sht As Worksheet Dim LastRow As Long Set sht = ActiveSheet LastRow = sht.Cells.SpecialCells(xlCellTypeLastCell).Row LastRow = sht.UsedRange.Rows(sht.UsedRange.Rows.Count).Row LastRow = sht.ListObjects("Table1").Range.Rows.Count LastRow = sht.Range("MyNamedRange").Rows.Count LastRow = sht.Range("A1").CurrentRegion.Rows.Count End Sub