Dynamisches Summieren in VBA
Hallo admins,
Ich würde etwas Hilfe bei einer Aufgabenstellung benötigen, der ich selbst nicht gewachsen bin.
Gegeben ist folgender Excel Budget-Plan:
Ich bräuchte eine Logik in VBA welche mir - immer dann wenn in Spalte C der Wert "Summe" steht - in den gelb umrandeten Zellen (also die in der gleichen Zeile wie "Summe") eine Summe bildet von allen Werten darunter (grün umrandet) und zwar so lange, bis in Spalte C eine leere Spalte kommt.
Dieses Muster kann sich 1..* wiederholen.
Es kann sein, dass das Dokument nur eine Planungselement darstellt und das Wort "Summe" nur einmal in Spalte C vorkommt, es kann aber auch sein, dass es 10 x vorkommt weil eben 10 Planungselemente vorhanden sind.
Ich habe mich mit ChatGPT versucht, aber entweder ist meine Fragestellung nicht spezifisch genug oder ChatGPT versteht mich nicht.
Hier ist was ich bisher versucht habe:
Dieser VBA Code überschreibt mir aber Zeile D14 mit einem Wert wenn ich auf ausführen klicke.
Ich würde mir aber wünschen, dass D13 mit der Summe von D14:D33 überschrieben wird in diesem Beispiel.
Ich bin für jede Hilfe dankbar.
Gruß
Michi
Ich würde etwas Hilfe bei einer Aufgabenstellung benötigen, der ich selbst nicht gewachsen bin.
Gegeben ist folgender Excel Budget-Plan:
Ich bräuchte eine Logik in VBA welche mir - immer dann wenn in Spalte C der Wert "Summe" steht - in den gelb umrandeten Zellen (also die in der gleichen Zeile wie "Summe") eine Summe bildet von allen Werten darunter (grün umrandet) und zwar so lange, bis in Spalte C eine leere Spalte kommt.
Dieses Muster kann sich 1..* wiederholen.
Es kann sein, dass das Dokument nur eine Planungselement darstellt und das Wort "Summe" nur einmal in Spalte C vorkommt, es kann aber auch sein, dass es 10 x vorkommt weil eben 10 Planungselemente vorhanden sind.
Ich habe mich mit ChatGPT versucht, aber entweder ist meine Fragestellung nicht spezifisch genug oder ChatGPT versteht mich nicht.
Hier ist was ich bisher versucht habe:
Sub SummeBerechnen()
Dim ws As Worksheet
Dim LastRow As Long
Dim StartRow As Long
Dim EndRow As Long
Dim SumRange As Range
Dim Cell As Range
' Set the worksheet where you want to perform the operation
Set ws = ThisWorkbook.Sheets("Budgetplanung")
' Find the last row in column C
LastRow = ws.Cells(ws.Rows.Count, "C").End(xlUp).Row
' Initialize the starting row
StartRow = 0
' Loop through the rows
For Each Cell In ws.Range("C2:C" & LastRow)
' Check if the cell contains "Summe"
If Cell.Value = "Summe" And StartRow = 0 Then
' Calculate the starting row
StartRow = Cell.Row + 1
ElseIf StartRow > 0 And Cell.Value = "" Then
' Calculate the sum range
EndRow = Cell.Row - 1
' Sum the values in column D
ws.Cells(StartRow, "D").Value = WorksheetFunction.Sum(ws.Range("D" & StartRow & ":D" & EndRow))
' Reset the starting row
StartRow = 0
End If
Next Cell
' Check if there is a remaining sum range
If StartRow > 0 Then
' Sum the values in the last group
ws.Cells(StartRow, "D").Value = WorksheetFunction.Sum(ws.Range("D" & StartRow & ":D" & LastRow))
End If
End Sub
Dieser VBA Code überschreibt mir aber Zeile D14 mit einem Wert wenn ich auf ausführen klicke.
Ich würde mir aber wünschen, dass D13 mit der Summe von D14:D33 überschrieben wird in diesem Beispiel.
Ich bin für jede Hilfe dankbar.
Gruß
Michi
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 41461152992
Url: https://administrator.de/contentid/41461152992
Ausgedruckt am: 19.12.2024 um 12:12 Uhr
11 Kommentare
Neuester Kommentar
Moin.
Warum überhaupt VBA dafür? Geht doch auch dynamisch mit einer Formel
Hier als bsp. für Zelle D13, lässt sich dann mit den Bezügen durch Ziehen und Kopieren auf die anderen anwenden.
Gruß sid
Warum überhaupt VBA dafür? Geht doch auch dynamisch mit einer Formel
Hier als bsp. für Zelle D13, lässt sich dann mit den Bezügen durch Ziehen und Kopieren auf die anderen anwenden.
=SUMME(BEREICH.VERSCHIEBEN($D14;0;0;VERGLEICH("Summe";$C14:$C$1048576;0)-2))
Zitat von @michi1983:
Sobald er diese Formel nämlich in Zeile D33 eingibt (was ja laut der Anforderung automatisiert passieren soll, dass dort ebenso weiter gerechnet wird), stimmt die Summe nicht mehr, ohne dass die Formel manuell angepasst werden muss.
Doch genau das geht damit ja, durch die Bezug(Dollarsetzung) beim Kopieren und Ziehen.Sobald er diese Formel nämlich in Zeile D33 eingibt (was ja laut der Anforderung automatisiert passieren soll, dass dort ebenso weiter gerechnet wird), stimmt die Summe nicht mehr, ohne dass die Formel manuell angepasst werden muss.
Bevor ich mich jetzt fusselig rede, hier beide Varianten, via Formel und VBA jeweils auf unterschiedlichen Sheets
https://we.tl/t-CSDHHD33s2
So long 🙋
https://we.tl/t-CSDHHD33s2
So long 🙋
Hallo,
Jetzt ist endlich ChatGPT schuld. Hurra
Gruß,
Peter
Jetzt ist endlich ChatGPT schuld. Hurra
Gruß,
Peter
Hallo,
Nein, das weiß ich nicht ohne das ein Zertifikat vorliegt
Gruß,
Peter
Nein, das weiß ich nicht ohne das ein Zertifikat vorliegt
dass ich mich wohl nicht richtig artikuliere.
Kann sein, muss aber nichtGruß,
Peter
👌
Bald kannst du deine Mappe in ChatGPT hochladen und schreiben, "Mach bitte bis Montag fertig ich bin dann mal ins Wochenende" . Ob du dann Montag gefeuert wirst, siehst du wenn das Licht angeht ... 😇
Bald kannst du deine Mappe in ChatGPT hochladen und schreiben, "Mach bitte bis Montag fertig ich bin dann mal ins Wochenende" . Ob du dann Montag gefeuert wirst, siehst du wenn das Licht angeht ... 😇