我有一个包含事务列表和每个事务的可变行数的工作表。我使用下面的代码对每笔交易的行数进行求和。
列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发布于 2016-08-03 05:35:46
最终的.Sum只添加了两个单元格:Cells(alRowFormula(lN), 8)和Cells(alRowFormula(lN), 8).End(xlDown)。
你真的想要
Cells(alRowFormula(lN), 5).Value = WorksheetFunction _
.Sum(Range(Cells(alRowFormula(lN), 8), Cells(alRowFormula(lN), 8).End(xlDown)))附注:您的其他值也可以通过以下代码使用.Sum函数来计算
'Sum rows
For li = 1 To lN - 1
Cells(alRowFormula(li), 5).Value = WorksheetFunction _
.Sum(Range(Cells(alRowFormula(li), 8), Cells(alRowFormula(li + 1)-1, 8)))
Next lihttps://stackoverflow.com/questions/38730634
复制相似问题