Anzeiger einzelner Teilsummen in Excel

Hallo, welche Erweiterung an diesem Programm müsste ich machen, dass es mit jedem Tastendruck eine Zwischensumme von der Spalte K berechnet, jedoch auf der rechten Nebenspalte, also L.
Also nochmal ich habe eine Rechnungsformular zu erstellen in Excel, dabei sollen Werte eingegeben und ausgerechnet werden, diese ausgerechneten Werte sollen auf Button klick zu einer Teilsumme ausgerechnet werden un in der Nebenspalte (L) ausgegeben werden, direkt neben dem Ende der eingegebenen Werte.
Danach soll es möglich sein weitere Werte einzugeben und von diesen Werten anschließend wieder auf Button klick eine Teilsumme auszurechnen ohne die zuvor eingegebenen nochmals mitzuaddieren. Dieser Vorgang soll immer wiederholbar sein. Wer kann mir dabei helfen, die folgende Prozedur zu verändern?

sub CommandButton1_Click()

Dim letzteZeile As IntegerConst Rechnungsblatt As String = "Rechnung"Const Spalte As String = "K"Const ersteMglZeile As Integer = 2Const letzteMglZeile As Integer = 15With Worksheets(Rechnungsblatt) If .Range(Spalte & letzteMglZeile) = „“ Then letzteZeile = .Range(Spalte & letzteMglZeile).End(xlUp).Row Else letzteZeile = letzteMglZeile End If .Range(Spalte & CStr(letzteZeile + 1)).Formula = _ „=Sum(“ & Spalte & ersteMglZeile & „:“ & Spalte & letzteZeile & ")"End With

End Sub

Danke im voraus für eure Hilfe

Hallo Daniel,
das von mir modifizeirte Makro

Private Sub CommandButton1\_Click()

 Dim letzteZeile As Integer, letzteSumme As Integer
 Const Rechnungsblatt As String = "Rechnung"
 Const Spalte As String = "K"
 Const SpalteSumme As String = "L"
 Const ersteMglZeile As Integer = 2
 Const letzteMglZeile As Integer = 15
 With Worksheets(Rechnungsblatt)
 If .Range(Spalte & letzteMglZeile) = "" Then
 letzteZeile = .Range(Spalte & letzteMglZeile).End(xlUp).Row
 letzteSumme = .Range(SpalteSumme & letzteMglZeile).End(xlUp).Row
 Else
 letzteZeile = letzteMglZeile
 letzteSumme = .Range(SpalteSumme & letzteMglZeile).End(xlUp).Row
 End If
 .Range(SpalteSumme & CStr(letzteZeile)).Formula = \_
 "=Sum(" & Spalte & letzteSumme + 1 & ":" & Spalte & letzteZeile & ")"
 End With

End Sub

produziert folgendes Ergebnis:

Tabellenblattname: Rechnung

 K L 
 1 Betrag Teilsumme 
 2 100 
 3 200 
 4 300 
 5 600 1200 
 6 100 
 7 120 220 
 8 230 
 9 450 
10 345 1025 
11 200 200 

Benutzte Formeln:
L5: =SUMME(K2:K5)
L7: =SUMME(K6:K7)
L10: =SUMME(K8:K10)
L11: =SUMME(K11:K11)

Gruß
Franz

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo danke für den Vorschlag, jetzt muss ich allerdings nochmal um eine Erweiterung fragen, wie kann ich es anstellen, dass es dabei die Nullen nicht beachtet, d.h. immer nach ganzen Zahl das Ergebnis ausgibt, mein Problem ist nämlich, dass ich die Spalte Betrag formatieren musste mit =Summe(H * I) und wenn ich nun den Button klicke, dass es mir die Zwischensumme berechnet, gibt das Programm mir das Ergebnis ganz unten am Ende der Formation aus, da durch die Formation lauter Nullen dastehen.

deshalb wäre es angebracht, das Programm so zu verändern, dass es Nullen nicht beachtet und hinter den zu summierenden ganzen Zahlen die Zwischensumme ausgibt.

gruß Daniel

Hallo Daniel,

folgende etwas radikalere Anpassung überspringt 0-Werte in den unteren Zeilen von Spalte K.

Private Sub CommandButton1\_Click()
 Dim letzteZeile As Integer, letzteSumme As Integer, Zelle As Range, i As Integer
 Const Rechnungsblatt As String = "Rechnung"
 Const Spalte As String = "K"
 Const SpalteSumme As String = "L"
 Const ersteMglZeile As Integer = 2
 Const letzteMglZeile As Integer = 15
 With Worksheets(Rechnungsblatt)
 Set Zelle = .Range(Spalte & letzteMglZeile)
 If .Range(Spalte & ersteMglZeile).Value = 0 Then Exit Sub 'noch keine Werte eingegeben
 If .Range(Spalte & letzteMglZeile).Value \> 0 And .Range(SpalteSumme & letzteMglZeile).Value \> 0 Then
 Exit Sub 'letzte Zeile bereits mit Teilsummenformel
 End If
 Do Until Zelle.Offset(i, 0) \> 0
 i = i - 1
 Loop
 letzteZeile = letzteMglZeile + i
 Do Until Not IsEmpty(Zelle.Offset(i, 1))
 i = i - 1
 Loop
 letzteSumme = letzteMglZeile + i

 .Range(SpalteSumme & CStr(letzteZeile)).Formula = \_
 "=Sum(" & Spalte & letzteSumme + 1 & ":" & Spalte & letzteZeile & ")"
 End With
End Sub

Gruß
Franz

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi jetzt hab ich aber das Problem, dass es negative Werte nicht dazuzählt bzw. abzieht. Und nicht sauber daneben schreibt.

Hoffe mir kann auch bei diesem Problem jemand auskunft geben! Danke

Hi,
hier die Version, die auch negative Werte verarbeiten kann

Private Sub CommandButton1\_Click()
 Dim letzteZeile As Integer, letzteSumme As Integer, Zelle As Range, i As Integer
 Const Rechnungsblatt As String = "Rechnung"
 Const Spalte As String = "K"
 Const SpalteSumme As String = "L"
 Const ersteMglZeile As Integer = 2
 Const letzteMglZeile As Integer = 15
 With Worksheets(Rechnungsblatt)
 Set Zelle = .Range(Spalte & letzteMglZeile)
 If .Range(Spalte & ersteMglZeile).Value = 0 Then Exit Sub 'noch keine Werte eingegeben
 If .Range(Spalte & letzteMglZeile).Value 0 And Not IsEmpty(.Range(SpalteSumme & letzteMglZeile)) Then
 Exit Sub 'letzte Zeile bereits mit Teilsummenformel
 End If
 Do Until Zelle.Offset(i, 0) 0
 i = i - 1
 Loop
 letzteZeile = letzteMglZeile + i
 Do Until Not IsEmpty(Zelle.Offset(i, 1))
 i = i - 1
 Loop
 letzteSumme = letzteMglZeile + i

 .Range(SpalteSumme & CStr(letzteZeile)).Formula = \_
 "=Sum(" & Spalte & letzteSumme + 1 & ":" & Spalte & letzteZeile & ")"
 End With
End Sub

Falls es immer noch Probleme gibt, dann muss statt der Spalte K die Eingabe in den Spalten H und I als Prüfkriterium eingebaut werden.

Gruß
Franz

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]