我有一個包含事務列表和每個事務的可變數量行的工作表。我正在使用下面的代碼按交易總和線路金額。一列中的VBA總和範圍直到另一列中的非空行爲止
列A是事務報頭(事務之間的空白單元格) 列H是交易行量 E欄是我想要總交易
因此,如果列A <>「」然後開始添加列H,直到列A再次爲<>「」。
該代碼除了最後一個事務處理完美。如果它的行數超過兩行,則只會累加第一行和最後一行的數量。我無法弄清楚爲什麼。
任何想法?
Here's a screenshot of my workbook
Option Explicit
Option Base 1
Sub SumColumnH()
Dim dSum As Double
Dim li As Long
Dim lj As Long
Dim lN As Long
Dim alRowFormula() As Long
Dim rng As Range
'Clear column 5
Intersect(Columns(5), Range(Rows(6), Rows(Rows.Count))).ClearContents
'Get row Index where to write formulas
For Each rng In Intersect(Columns(1), Range(Rows(6), Rows(Rows.Count))) _
.Cells.SpecialCells(xlCellTypeConstants)
lN = lN + 1
ReDim Preserve alRowFormula(lN)
alRowFormula(lN) = rng.Row
Next rng
'Sum rows
For li = 1 To lN - 1
dSum = 0
For lj = alRowFormula(li) To alRowFormula(li + 1) - 1
dSum = dSum + Cells(lj, 8).Value
Next lj
Cells(alRowFormula(li), 5).Value = dSum
Next li
'Final sum row
Cells(alRowFormula(lN), 5).Value = WorksheetFunction _
.Sum(Cells(alRowFormula(lN), 8), Cells(alRowFormula(lN), 8).End(xlDown))
End Sub
不知道使用.SUM函數計算,但它看起來像您保持在循環 –