VBA-条件Sum列B到列A中值的变化
问题描述:
基本解释。我正在一个电子表格中收集所有多个发票数据。可以说我有只有两个单独的每个不同的发票列:VBA-条件Sum列B到列A中值的变化
Serial ID. Value
ABC001 $5.00
ABC001 $5.00
ABC001 $5.00
CBA100 $6.00
CBA100 $4.00
CBA100 $5.00
我想VBA的解决方案,将遍历列,在columnB和值,直到有在columnA的变化,然后会把那笔在列A中的变化之前的列C最后一行中的值。该outpoot应该是这样的:
Serial ID. Value Total
ABC001 $5.00
ABC001 $5.00
ABC001 $5.00 $15.00
CBA100 $6.00
CBA100 $4.00
CBA100 $5.00 $15.00
到目前为止,我发现这是由D Mason
的解决方案,但与他的代码的问题,即值的columnB ADRESS总和在EXACT行数最接近其中所述变化发生(在此之前),它会像这样运行:
Serial ID. Value Total
ABC001 $5.00 $15.00
ABC001 $5.00
ABC001 $5.00
CBA100 $6.00 $15.00
CBA100 $4.00
CBA100 $5.00
我相信,我做我的问题清楚。但为了以防万一,串行标识将始终保留在同一列中,所以值。不会执行排序。如果整个范围的总和对我来说也不好,因为可能有重复的发票,并且如果函数使用范围(A:A)查找条件序列号,则会产生错误结果。提前感谢您,如果有一些方法可以改善我的问题(如果我得到正确的答案并希望能够更容易地找到具有相同问题的其他人),请提出建议。
答
请试试这个...
Sub GetTotal()
Dim rng As Range, cell As Range
Dim lr As Long
Dim Total As Double
Application.ScreenUpdating = False
lr = Cells(Rows.Count, 1).End(xlUp).Row
Set rng = Range("A2:A" & lr)
For Each cell In rng
If cell = cell.Offset(1) Then
Total = Total + cell.Offset(0, 1)
Else
Total = Total + cell.Offset(0, 1)
cell.Offset(0, 2) = Total
Total = 0
End If
Next cell
Columns("C").NumberFormat = "$#,##0.00"
Application.ScreenUpdating = True
End Sub
谢谢你,先生,给了一次进入这个解决方案。这工作正如预期的那样。 –
@DominykasCyras不客气!请花一点时间接受答案,将您的问题标记为已解决。 :) – sktneer