Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1276to1280
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

Automatische Summenbildung mit VBA

Automatische Summenbildung mit VBA
Lutz
Guten Abend zusammen,
da mir dieses Forum schon sehr viel weitergeholfen hat, wende ich mich wieder vertrauensvoll an euch.
Ich habe versucht ein Makro auf die Beine zu stellen, dass mir automatisch eine Summenformel in eine Zelle schreibt. Das Problm ist, diese Zelle liegt nicht immer am gleichen Platz (also Range xx ist da nicht möglich). Daher wollte ich dem Makro sagen: Suche in Spalte E nach "Summe A*"(dieser Begriff steht immer in der Zeile in der die Summe gebildet werden soll) und schreibe in die Zelle zwei Spalten daneben die Formel für die Summenbildung (=SUMME()). Das wäre ja noch in Ordnung wenn der Summenbereich nicht auch noch variable wäre (also =SUMME (A3:A15) geht nicht da die Anzahl variieren kann). Daher muss man nochmal einen Umweg gehen. Überall da wo ein zu summierender Wert steht, steht analog in Spalte A ein "A". Daher habe ich mir gedacht man könnte dem Makro sagen: Zähle alle "A" in Spalte A und mit dem Wert x kann man den Summenbereich eingrenzen (also: summierte oberhalb des eigentlichen Summenfeldes x Zellen ). Und damit nicht genug... sollte das alles klappen soll die Summe über die ganze Zeile (ab dort wo "Summe A*" steht) gebildet werden bis zur benutzten Spalte.
In meinem Kopf klingt das alles logisch, nur wie ich das ganze verschriftlichen soll weiß ich nicht. Ich hoffe man konnte wenigstens ein bisschen verstehen. Als VBA-Anfänger sowas zu beschreiben und erst recht so was zu programmieren ist so gut wie unmöglich.
Ich hab mich auch mal dran versucht bin aber kläglich gescheitert (für einige ist das bestimmt ganz lustig was ich geschrieben habe, aber mich verzweifelt es einfach nur):
Sub Summenbildung() Dim adr As Range Dim iLeSpalte As Integer Dim lLezeile As Long Dim c As Range Dim Anz As Integer Dim i As Integer Dim a As Integer Dim Ende1 As Long Dim Ende2 As Long Dim rng As Range iLeSpalte = Range("IV1").End(xlToLeft).Column lLezeile = Range("A65536").End(xlUp).Row Ende1 = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Column Ende2 = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Column With Worksheets("Tabelle1").Range("A1", Cells(lLezeile, iLeSpalte)) Set c = .Find("Summe A*", LookIn:=xlValues) If Not c Is Nothing Then Set adr = .Range("A4:A300") If Not adr Is Nothing Then Anz = Application.WorksheetFunction.CountIf(adr, "A") For i = 7 To Ende2 For a = 2 To Ende1 ActiveCell.Offset(0, a).Formula = "=Sum(A1:" & Cells(Anz, i) & ")" Next a Next i End If End If End With End Sub
Erstmal danke fürs lesen und noch mehr Dank wenn ihr mir sogar helfen könntet!!
Gruß Lutz

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Automatische Summenbildung mit VBA
28.08.2012 23:40:32
fcs
Hallo Lutz,
hier wäre eine Beispieltabelle, ggf. mit anonymisierten Daten extrem Hilfreich, auch zum Testen.
Ansonsten: sehen deine Daten etwa wie folgt aus?
Tabelle1

 ABCDEFGHI
1xxx02x03x04x05x06x07x08x08
2xxx12x13x14x15x16x17x18x18
3A     023
4A     134
5A     246
6A     354
7A     463
8A     575
9A     582
10xx   Summe Axxx 203324

Formeln der Tabelle
ZelleFormel
G10=SUMME(G4:G9)
H10=SUMME(H4:H9)
I10=SUMME(I4:I9)


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
D.h.: 1. Die zu summierenden Zahlen beginnen immer in der gleichen Zeile
2. Der zu summierende Bereich endet direkt oberhalb der Summenzeile oder auch mit einer fixen Zeilenzahl oberhalb der Summenzeile.
Gruß
Franz

Anzeige
AW: Automatische Summenbildung mit VBA
29.08.2012 20:13:42
Lutz
Hallo Franz,
erstmal vorweg...
erstens: Erstmal vielen Dank für die Antwort!
zweitens: Hätte ich nicht gedacht, dass mir so spät noch jemand antwortet.
drittens: Hätte ich nicht damit gerechnet, dass man aus meiner Beschreibung schlau werden konnte (deine Darstellung ist nämlich richtig)
zu 1.: Die zu summierenden Zahlen beginnen in diesem Falle immer in der gleichen Zeile. Das Problem ist das es das ganze noch mal für B und C (also in Spalte A unterhalb der A´s) gibt. Und da die Anzahl an A´s, B´s und C´s variabel sind, beginnen die B´s und C´s nicht immer in der gleichen Zeile.
zu 2.: oberhalb der "Sumenzelle" sind jeweils noch 3 zeilen leer und ab dann beginnt der Zahlenbereich.
Ich habe das ganze noch mal dargestellt:
https://www.herber.de/bbs/user/81636.xlsx
Ich weiß nicht ob das überhaupt als Makro möglich ist?!
Vielen Dank!
Gruß Lutz

Anzeige
AW: Automatische Summenbildung mit VBA
30.08.2012 12:16:02
fcs
Hallo Lutz,
da die Tabelle regelmäßig aufgebaut ist, kann man die Summenzeilen problemlos ermitteln.
Es geht mit der Funktion SUMME.
Wenn aber mehr als nur 3 Werte mit Zwischensummen auszuwerten sind, dann ist die Funktion Teilergebnis ggf. flexibler/einfacher zu programmieren.
Gruß
Franz
Textdateien mit Code
SUMME: https://www.herber.de/bbs/user/81642.txt
TEILERGEBNIS: https://www.herber.de/bbs/user/81643.txt

AW: Automatische Summenbildung mit VBA
30.08.2012 14:25:21
Lutz
Hallo Franz,
funktioniert einwandfrei. Nur habe ich einen Fehler bei der Beschreibung gemacht: Wie bzw was muss ich ändern damit bei der letzten Summe (A, B, C) nicht die Summe von "Summe Cxx" sondern die von "Summe CCxx" einbezogen wird? (Es geht um Textdatei SUMME).
Nochmals vielen Dank!
Gruß Lutz

Anzeige
AW: Automatische Summenbildung mit VBA
30.08.2012 20:38:41
fcs
Hallo Lutz,
in der SUMME-Version muss die ZeileSumme_C nach CC-Berechnung nochmals berechnet werden
    'Summenformel für C einfügen
Call SummenFormel(varWert:="C")
ZeileSumme_C = ZeileSumme
'Summenformel für CC.. einfügen
Call SummenFormel(varWert:="C")
'eingefügte Formel überschreiben
With .Range(.Cells(ZeileSumme, Spalte1), .Cells(ZeileSumme, SpalteL))
.FormulaR1C1 = "=SUM(R[-" & ZeileSumme - Zeile_1 & "]C[0]:R[-1]C[0], " _
& "R[-" & ZeileSumme - ZeileSumme_C & "]C[0])"
End With
ZeileSumme_C = ZeileSumme
'Summenformel für Gesamtsumme A+B+C
in der TEILERGEBIS-Version muss die ZeileSumme_C hinter die CC-Berechnung verschoben werden:
    'Summenformel für C einfügen
Call Formel_Wert(varWert:="C", bolC1:=True)
'Summenformel für CC einfügen
Call Formel_Wert(varWert:="C")
'eingefügte Formel überschreiben
With .Range(.Cells(ZeileSumme, Spalte1), .Cells(ZeileSumme, SpalteL))
.FormulaR1C1 = "=SUBTOTAL(9,R[-" & ZeileSumme - Zeile_1C & "]C[0]:R[-1]C[0])"
End With
ZeileSumme_C = ZeileSumme
'Summenformel für Gesamtsumme A+B+C

Gruß
Franz

Anzeige
AW: Automatische Summenbildung mit VBA
31.08.2012 08:25:00
Lutz
Hallo Franz,
genauso wie ich es wollte!!Unglaublich!!!
Vielen Dank!!!!!!!
Gruß Lutz

145 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige