Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Summe variable per VBA

Summe variable per VBA
16.03.2016 07:25:23
Peter
Hallo Excelspezialisten,
wünsche einen schönen guten Morgen.
Ich stosse immer wieder an meine Grenzen und bitte Euch um Hilfe.
Habe ein Problem eine variable Summenformel in eine Tabelle per Makro einzufügen.
Ausgehend von z.B. G49 (dort soll die Formel eingefügt werden) soll die Summe von
E3:E48 gebildet werden abzüglich Summe von F3:E48 zuzüglich G3.
Diese Formel soll aber so gefertigt werden, dass diese bei jedem Seitenwechsel per
Makro eingefügt wird.
Musterdatei anbei:https://www.herber.de/bbs/user/104365.xlsm
Besten Dank
Gruss Peter

Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Summe variable per VBA
16.03.2016 08:42:54
UweD
Hallo
so ?

Sub Makro()
Dim SW As Integer, LR As Double, i As Double
With ActiveSheet
LR = .Cells(Rows.Count, 1).End(xlUp).Row 'letzte Zeile der SpalteA
SW = 50 ' Schrittweite  Übertrag
For i = SW - 1 To LR Step SW
.Cells(i, 7).FormulaR1C1 = _
"=SUM(R[-" & SW - 4 & "]C[-2]:RC[-2])-SUM(R[-" & SW - 4 & "]C[-1]:RC[-1])+R[-" & SW  _
- 4 & "]C"
Next i
End With
End Sub
Du kannst danach natürlich die Formelwerte auch noch in Zahlen festschreiben
Gruß UweD

Anzeige
Summe variable per VBA geht nicht
16.03.2016 10:13:27
Peter
Hallo Uwe,
besten Dank für Deine Hilfe, aber leider geht es nicht so wie ich das möchte.
Verschiedene Versionen der Änderung an Deiner Formel führen leider nicht zum Ergebnis.
Ich füge Dir nochmals die Datei ein mit der Bitte um Berichtigung.
https://www.herber.de/bbs/user/104367.xlsm
Besten Dank.
Gruss Peter

Anzeige
AW: Summe variable per VBA geht nicht
16.03.2016 11:01:02
UweD
Hallo
Die Abstände bei den Überträgen sind ungleich.
Ich war von genau 50 ausgegangen.
Sind die ungleichmäßig?
Dann müsste man die Worte "Übertrag" suchen
Jetzt auch noch erschwerend hast du "Übertrag" vor und nach der Zeile auch noch gleich benannt ..
Gruß UweD

Anzeige
AW: Summe variable per VBA geht nicht
16.03.2016 11:18:31
Peter
Hallo Uwe,
irgendwo ist ein Fehler enthalten. Es geht darum, dass ich bei jedem Seitenwechsel
Übertrag - Summe
Datum Grund der Eingabe Briefmarke € Briefmarke Anzahl Zugang € Abgang € Bestand €
Übertrag
diese drei Zeilen einfüge. Dieser ist immer nach 50 Zeilen.
Die Summe ist jeweils in G jede 50. Zeile einzufügen, wobei es kein Problem ist, wenn die Summe für Spalte E und F der 51. Zeile anfangen. Wenn ich nun diese drei Zeilen beim Seitenwechsel einfüge, dann wird zwar die Summe richtig berechnet, aber der Saldo müsste zwei Zellen tiefer sein. dann wäre es richtig.
Gruss Peter

Anzeige
AW: Summe variable per VBA geht nicht
16.03.2016 13:07:50
UweD
Das ist aber das Problem.
Der Abstand ist NICHT gleich.
Die Zeile mit den Überschriften startet in 2
+ 50 wäre 52 (das ist noch richtig)
+ 50 wäre 102 ( bei dir aber in 100)
+ 50 wäre 152 ( bei dir aber 150)
hier musst du erst mal beginnen das richtig zu stellen
Gruß UweD

Anzeige
AW: Summe variable per VBA geht nicht
16.03.2016 13:17:21
UweD
Also bei dieser Zeilen Verteilung

Tabelle2
 ABCDEFG
1Übertrag      
2Test1Test2Test3Test4Test5Test6Test7
3Übertrag     100
4    10  
5     1 
6       
50       
51Übertrag     109
52Test1Test2Test3Test4Test5Test6Test7
53Übertrag     200
54    20  
55     2 
96       
99       
100       
101Übertrag     218
102Test1Test2Test3Test4Test5Test6Test7
103Übertrag     300
104    30  
105     3 
150       
151Übertrag     327
152Test1Test2Test3Test4Test5Test6Test7
153Übertrag     400
154    40  
155     4 

verwendete Formeln
Zelle Formel Bereich N/A
G51,G101,G151=SUMME(E3:E51)-SUMME(F3:F51)+G3  
Excel-Inn.de
Hajo-Excel.de
XHTML-Tabelle zur Darstellung in Foren, einschl. der neuen Funktionen ab Version 2007
Add-In-Version 21.10 einschl. 64 Bit


läuft das Makro so

Sub Makro()
Dim ER As Integer, SW As Integer, LR As Double, i As Double
With ActiveSheet
LR = .Cells(Rows.Count, 1).End(xlUp).Row 'letzte Zeile der SpalteA
ER = 51 'Erste Formel
SW = 50 ' Schrittweite  Übertrag
For i = ER To LR Step SW
.Cells(i, 7).FormulaR1C1 = _
"=SUM(R[-" & SW - 2 & "]C[-2]:RC[-2])-SUM(R[-" & SW - 2 & "]C[-1]:RC[-1])+R[-" _
& SW - 2 & "]C"
Next i
End With
End Sub

Anzeige
AW: Summe variable per VBA geht nicht
16.03.2016 13:42:02
Peter
Hallo Uwe,
das Makro läuft jetzt einwandfrei.
Ich blicke jedoch bei dem Makro noch nicht richtig durch um dieses selbst zu verändern.
Der Seitenumbruck beim Drucken liegt jedoch oberhalb "Übertrag - Summe". Was muss ich bitte
ändern, damit der Seitenumbruch zwischen Übertrag - Summe und Datum liegt.

Anzeige
AW: Summe variable per VBA geht nicht
16.03.2016 14:04:48
UweD

ER = 51 'Erste Formel
die erste Formel soll in Zeile 51 eingesetzt werden
For i = ER To LR Step SW
im ersten Durchlauf in Zeile =51, dann 101, 151 usw.
.Cells(i, 7).FormulaR1C1 = _
7 bedeutet Spalte G
"=SUM(R[-" & SW - 2 & "]C[-2]:RC[-2])
Zur Formel selbst... SW-2 ausgehend von der Zeile der Formel (also hier 51)
SW-2 =48 Zeilen weiter oben beginnend bis zur aktuellen Zeile soll der Summenbereich gehen
Also ab Zeile 3 bis 51 usw....

Anzeige
AW: Summe variable per VBA geht nicht
16.03.2016 15:07:18
Peter
Hallo Uwe,
funktioniert einwandfrei. Vielen herzlichen Dank.
Wünsche Dir noch einen schönen erfolgreichen Tag.
Gruss Peter
;
Anzeige
Anzeige

Infobox / Tutorial

Variable Summenberechnungen in Excel VBA


Schritt-für-Schritt-Anleitung

Um eine variable Summenformel in Excel per VBA zu erstellen, folge diesen Schritten:

  1. Öffne die Excel-Datei und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject (deinDateiname)" und wähle "Einfügen" > "Modul".

  3. Kopiere den folgenden Code in das Modul:

    Sub Makro()
       Dim SW As Integer, LR As Long, i As Long
       With ActiveSheet
           LR = .Cells(Rows.Count, 1).End(xlUp).Row ' letzte Zeile der Spalte A
           SW = 50 ' Schrittweite für Übertrag
           For i = 51 To LR Step SW
               .Cells(i, 7).FormulaR1C1 = _
               "=SUM(R[-48]C[-2]:RC[-2])-SUM(R[-48]C[-1]:RC[-1])+R[-48]C"
           Next i
       End With
    End Sub
  4. Schließe den VBA-Editor und gehe zurück zu Excel.

  5. Führe das Makro aus: Drücke ALT + F8, wähle das Makro "Makro" aus und klicke auf "Ausführen".

Mit diesem Makro wird die Formel in jede 50. Zeile in Spalte G eingefügt, wobei es die Werte von Spalte E und F summiert und den Wert in G3 hinzufügt.


Häufige Fehler und Lösungen

  • Fehler: Das Makro wird nicht ausgeführt oder zeigt einen Laufzeitfehler.

    • Lösung: Stelle sicher, dass die Datei Makros zulässt und du die richtigen Berechtigungen hast.
  • Fehler: Die Summenformel ist nicht korrekt.

    • Lösung: Überprüfe die Zeilenreferenzen in der Formel und passe sie entsprechend an. Die Formel sollte R[-48]C[-2] und R[-48]C[-1] verwenden.

Alternative Methoden

Wenn du keine Makros verwenden möchtest, kannst du die Funktion SUMME() direkt in Excel verwenden. Du kannst die Formel manuell in die Zellen einfügen, aber das ist nicht so effizient wie die Verwendung von VBA.

=SUMME(E3:E51)-SUMME(F3:F51)+G3

Diese Formel kannst du in die Zellen G51, G101, G151 usw. einfügen, was jedoch bei großen Datenmengen mühsam sein kann.


Praktische Beispiele

Hier sind einige praktische Beispiele, wie du die VBA Summe nutzen kannst:

  1. Summe von variablen Bereichen: Angenommen, du hast Daten in den Spalten E und F und möchtest in G jede 50. Zeile die Summe berechnen.

    .Cells(i, 7).FormulaR1C1 = "=SUM(R[-48]C[-2]:RC[-2])-SUM(R[-48]C[-1]:RC[-1])+R[-48]C"
  2. Erweiterung der Formel: Um auch weitere Berechnungen in die Formel einzufügen, kannst du die Formel anpassen, um zusätzliche Bedingungen oder Berechnungen zu integrieren.


Tipps für Profis

  • Benutze Option Explicit am Anfang deiner Module, um sicherzustellen, dass alle Variablen deklariert sind. Dies hilft, Fehler zu vermeiden.
  • Optimiere dein Makro, indem du die Berechnungseinstellungen auf xlCalculationManual setzt, während das Makro läuft, und danach wieder auf xlCalculationAutomatic zurücksetzt. Das beschleunigt die Ausführung.
Application.Calculation = xlCalculationManual
' Dein Makro Code
Application.Calculation = xlCalculationAutomatic

FAQ: Häufige Fragen

1. Was mache ich, wenn das Makro nicht funktioniert? Überprüfe, ob das Makro in der richtigen Excel-Version ausgeführt wird und dass die Datei nicht im geschützten Modus geöffnet ist.

2. Kann ich die Zeilenabstände anpassen? Ja, passe die Werte in der For-Schleife und in der Formel an, um die Zeilenabstände zu ändern.

3. Ist es möglich, die Formel automatisch zu aktualisieren? Ja, das Makro kann so angepasst werden, dass es beim Öffnen der Datei oder bei bestimmten Ereignissen ausgeführt wird.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige