Ich habe ein Arbeitsblatt mit einer Liste von Transaktionen und einer variablen Anzahl von Zeilen pro Transaktion. Und ich verwende den folgenden Code, um die Zeilenbeträge nach Transaktion zu summieren.VBA Summe Bereich in einer Spalte bis nicht leere Zeile in einer anderen Spalte
Spalte A ist der Vorgangskopf (leere Zellen zwischen Transaktionen) Spalte H ist die Transaktionszeile beträgt Spalte E ist, wo ich die Transaktion
insgesamt willAlso, wenn Spalte A <> „“ starten Sie dann Spalte hinzufügen H bis Spalte A wieder <> "" ist.
Der Code funktioniert perfekt mit Ausnahme der letzten Transaktion. Wenn es mehr als zwei Zeilen hat, addiert es nur den ersten und letzten Zeilenbetrag. Und ich kann nicht herausfinden warum.
Irgendwelche Ideen?
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
nicht sicher, aber es sieht aus wie Sie die Summe zurück in der Schleife auf 0 halten Zurücksetzen –