Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1264to1268
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA gleitende Zwischensumme einfügen

VBA gleitende Zwischensumme einfügen
Romina
Ich habe eine Tabelle, die variabel in Breite und Länge ist, aber die erste Spalte (B) ist immer an der selben Stelle beispielhaft so etwa:
A 1
A 1
A 1
A 1
A 1
SUMME 5
B 1
B 1
B 1
B 1
B 1
B 1
B 1
B 1
B 1
SUMME 9
C 1
C 1
SUMME 2
D 1
D 1
D 1
SUMME 3
E 1
E 1
SUMME 2
Jetzt muss ich Zwischensummen unter jede schon gegebene Summe einfügen, die dann die vorherige Summe mit der aktuellen verrechnet, also A+B;A+B+C;A+B+C+D;A+B+C+D+E
A kann unterschiedlich lang werden, B-E bleiben immer gleich lang!
Neue Zeile einfügen kann ich, aber wie kann ich diese neuen Summen berechnen lassen.
Bitte helft mir!!!
Grüße Romina
AW: VBA gleitende Zwischensumme einfügen
12.06.2012 17:29:36
fcs
Hallo Romina,
geht es um eine Datei? Oder willst du das für die Anwendung in vielen Tabellen automatisieren?
Für eine oder wenige Tabellen kannst du die folgenden Formeln nach dem Einfügen der Leerzeilen verwenden.
Die Formel muss du in einer Zelle einfügen. Anschließend kannst du sie in die anderen Zeilen und nach rechts kopieren.
Gruß
Franz
Tabellenblattname: Tabelle1
A         B
1              A    1
2              A    1
3              A    1
4              A    1
5              A    1
6          SUMME    5
7              B    1
8              B    1
9              B    1
10              B    1
11              B    1
12              B    1
13              B    1
14              B    1
15              B    1
16          SUMME    9
17  Zwischensumme   14
18              C    1
19              C    1
20          SUMME    2
21  Zwischensumme   16
22              D    1
23              D    1
24              D    1
25          SUMME    3
26  Zwischensumme   19
27              E    1
28              E    1
29          SUMME    2
30       Endsumme   21
Benutzte Formeln:
B17:  =TEILERGEBNIS(9;B$1:B16)-SUMMEWENN($A$1:$A16;"SUMME";B$1:B16)
B21:  =TEILERGEBNIS(9;B$1:B20)-SUMMEWENN($A$1:$A20;"SUMME";B$1:B20)
B26:  =TEILERGEBNIS(9;B$1:B25)-SUMMEWENN($A$1:$A25;"SUMME";B$1:B25)
B30:  =TEILERGEBNIS(9;B$1:B29)-SUMMEWENN($A$1:$A29;"SUMME";B$1:B29)

Anzeige
AW: Crosspost MOF Gruss owT.
12.06.2012 17:39:43
hary
.
AW: VBA gleitende Zwischensumme einfügen
12.06.2012 17:51:49
Romina
Also ich ziehe mir Daten, die dann formatiert werden und in etwa die obige Tabelle entsteht. Mit einem einfachen AMkro aufzeichnen geht es nicht, weil die As mal 5 mal 10 mal 7 Zeilen lang sein können, der Rest bleibt aber immer konstant. Ich muss es also doch mit einem VBA machen, oder?
AW: VBA gleitende Zwischensumme einfügen
12.06.2012 20:17:11
fcs
Hallo Romina,
auch ein aufgezeichnetes Makro ist VBA, aber eben mit eingeschränkten Möglichkeiten
Nachfolgend ein Makro, dass beginnend vom Ende der Liste die erforderlichen Leerzeichen und Formeln einfügt.
Gruß
Franz
Sub Zwischensummen()
Dim wks As Worksheet
Dim i As Long, Zeile_L As Long, Zeile_1 As Long
Dim Spalte_1 As Long, Spalte_L As Long
Dim strA As String
Set wks = ActiveSheet
Zeile_1 = 1 '1 Zeile die in den Formeln summiert werden soll
Spalte_1 = 2 'Spalte in der 1. Formeln eingetragen werden sollen
With wks
'letzte Daten-Zeile
Zeile_L = .Cells(.Rows.Count, 1).End(xlUp).Row
'letzte Daten-Spalte
Spalte_L = .Cells(Zeile_L, .Columns.Count).End(xlToLeft).Column
For i = 1 To 4
'Einfügezeile und Text in Spalte A festlegen
Select Case i
Case 1: Zeile_L = Zeile_L + 1: strA = "ENDSUMME"
Case 2: Zeile_L = Zeile_L - 3: strA = "ZWISCHENSUMME"
Case 3: Zeile_L = Zeile_L - 4: strA = "ZWISCHENSUMME"
Case 4: Zeile_L = Zeile_L - 3: strA = "ZWISCHENSUMME"
End Select
'leerzeile einfügen
.Rows(Zeile_L).Insert Shift:=xlShiftDown
'Eintrag in Spalte A
.Cells(Zeile_L, 1) = strA
'Formeln in Leerzeile einfügen
.Range(.Cells(Zeile_L, Spalte_1), .Cells(Zeile_L, Spalte_L)).FormulaR1C1 = _
"=SUBTOTAL(9,R" & Zeile_1 & "C:R[-1]C)-SUMIF(R" & Zeile_1 & "C1:R[-1]C1,""SUMME"",R" _
_
& Zeile_1 & "C:R[-1]C)"
Next i
End With
End Sub

Anzeige
AW: VBA gleitende Zwischensumme einfügen
12.06.2012 20:25:54
romina
Super! Danke! kann es nur leider erst nächste Woche ausprobieren :(
Viele Grüße
AW: VBA gleitende Zwischensumme einfügen
18.06.2012 09:58:24
Romina
Funnktioniert fast perfect! 1000000 Dank!
Nur sucht er den SUMMEWENN-Befehl in der falschen Spalte. Das müsste die r+1 sein.
Was müsste ich Ihm übergeben?
AW: VBA gleitende Zwischensumme einfügen
18.06.2012 11:27:55
fcs
Hallo Romina,
genau kann ich es nicht sagen, da ich nicht verstehe welche Spalte falsch ist.
Die Spalte in der "SUMME" gesucht wird, oder die Spalte in der die entsprechenden Werte stehen, die summiert werden sollen.
SUMIF(R" & Zeile_1 & "C1:R[-1]C1,""SUMME"",R" & Zeile_1 & "C:R[-1]C)

ändern in
SUMIF(R" & Zeile_1 & "C2:R[-1]C2,""SUMME"",R" & Zeile_1 & "C:R[-1]C)

wenn "SUMME" immer in Spalte B steht.
Gruß
Franz
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige