Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
960to964
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
960to964
960to964
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Summenformeln autom.generieren

Summenformeln autom.generieren
26.03.2008 15:56:23
Petra
Hallo liebe Excelgemeinde
ich möchte per VBA Summenformeln erstellen. Die Summierung soll hierarchisch erfolgen, ich habe mal ein Beispiel hochgeladen und die Formeln händisch eingetragen. Mein Problem ist nur, es erfolgen dauernd Änderungen und Neuanlagen. Ich könnte mir vorstellen, dass das Ganze mit do loop -Schleifen zu lösen wäre. Wer ist so nett, und schaut sich mal meine Beispieldatei an?
Liebe Grüße
Petra
https://www.herber.de/bbs/user/51042.xls

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

Betreff
Datum
Anwender
Anzeige
AW: Summenformeln autom.generieren
26.03.2008 16:19:13
Daniel
HI
sorry, aber für mich ist da keine Logig erkennbar, was wie warum aufsummiert werden soll.
kannst du mal die Regel beschreiben, woran man das ableiten kann?
Gruß, Daniel

AW: Summenformeln autom.generieren
26.03.2008 16:19:13
Daniel
HI
sorry, aber für mich ist da keine Logig erkennbar, was wie warum aufsummiert werden soll.
kannst du mal die Regel beschreiben, woran man das ableiten kann?
Gruß, Daniel

AW: Summenformeln autom.generieren
26.03.2008 16:32:00
Petra
Hi Daniel
danke, dass Du Dich meiner annimmst. Hier die Erklärung:
die Spalte A enthält eine sog. Hierarchiestufe, d.h. alle Zeilen mit z.B. der 2 (Spalte A) und einem "S" (Spalte B) enhält eine Summenformel, die alle Zeilen mit einer 3 in Spalte A enthält. Das Ganze geht solange nach unten, bis in Spalte A wieder eine 2 und in Spalte B ein "S" vorkommt. Da gehts dann wieder so weiter, bis zur nächsten 2 S.
Das gleiche Spielchen erfolgt auch mit den restlichen Hierarchiestufen, d.h. in den Zeilen mit 3 (Spalte A) und "S" (Spalte B) soll die Summierung der 4 (Spalte A) ersichtlich sein. usw.....
Ich weiß, hört sich fürchterlich an, aber setz doch mal den Detektiv auf eine Summe, dann wirds sicherlich klarer werden.
Liebe Grüße
Petra

Anzeige
AW: Summenformeln autom.generieren
26.03.2008 21:02:00
Erich
Hallo Petra,
probier mal

Option Explicit
Sub SumFormeln()
Dim xx(-1 To 9, 0 To 30) As Long
Dim zz As Long, tt As String, ii As Integer
For zz = Cells(Rows.Count, 1).End(xlUp).Row To 6 Step -1
If xx(Cells(zz, 1), 0) > 0 Then
tt = "=C" & xx(Cells(zz, 1), xx(Cells(zz, 1), 0))
For ii = xx(Cells(zz, 1), 0) - 1 To 1 Step -1
tt = tt & "+C" & xx(Cells(zz, 1), ii)
Next ii
Cells(zz, 5).Formula = tt
xx(Cells(zz, 1), 0) = 0
End If
xx(Cells(zz, 1) - 1, 0) = xx(Cells(zz, 1) - 1, 0) + 1
xx(Cells(zz, 1) - 1, xx(Cells(zz, 1) - 1, 0)) = zz
Next zz
End Sub

(Zumindest) einen Mangel hat die Prozedur:
Die Zellen werden in den Formeln einzeln aufgeführt,
also z. B. C15+C16+C17. SUMME(C15:C17) wäre besser.
Aber das könnte auch noch werden...
Im Bereich A793 bis A798 scheint sich ein falscher Fehler eingeschlichen zu haben:
In C793 steht "=SUMME(C794:C798)", in A796 fehlt die Hierarchiestufe.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: Summenformeln autom.generieren
26.03.2008 21:27:54
Erich
Hallo Petra,
hier eine Version, die auch die Funktion SUMME einsetzt:

Option Explicit
Sub SumFormeln2()
Dim xx(-1 To 9, 0 To 30) As Long
Dim zz As Long, ss As Integer, anz As Integer, tt As String, ii As Integer
For zz = Cells(Rows.Count, 1).End(xlUp).Row To 6 Step -1
ss = Cells(zz, 1)
If xx(ss, 0) > 0 Then
anz = xx(ss, 0)
If anz > 2 Then
For ii = 2 To anz
If xx(ss, ii)  xx(ss, ii - 1) - 1 Then Exit For
Next ii
End If
If anz 

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

AW: Summenformeln - Korrektur
26.03.2008 21:41:00
Erich
Hi Petra,
sorry, zum Testen hatte ich die Formeln nicht in Spalte C, sondern in F schreiben lassen.
Bitte ändere die Zeile
Cells(zz, 6).Formula = tt
in
Cells(zz, 3).Formula = tt
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: Summenformeln per VBA - Version 3
27.03.2008 09:24:36
Erich
Hî Petra,
hier die 3. Version, mit einigen Kommentaren.
Achtung: Neu ist, dass zu Beginn ALLE Formeln in Spalte C gelöscht werden.
Es wird also vorausgesetzt, dass in den "Nicht-Summen-Zellen" keine Formeln stehen.

Sub SumFormeln3()
Dim arrM(-1 To 9, 0 To 30) As Long        ' evtl. mahr als 30 Stellen nötig
Dim zz As Long, ss As Long, anz As Long, tt As String, ii As Long
On Error Resume Next                      ' lösche ALLE Formeln in Spalte C
Columns(3).SpecialCells(xlCellTypeFormulas, 23).ClearContents
On Error GoTo 0
For zz = Cells(Rows.Count, 1).End(xlUp).Row To 6 Step -1
ss = Cells(zz, 1)
If arrM(ss, 0) > 0 Then                ' Gibt es "vorgemerkte" für Stufe ss?
anz = arrM(ss, 0)
If anz > 2 Then
For ii = 2 To anz                ' fortlaufende Zeilen?
If arrM(ss, ii) + 1  arrM(ss, ii - 1) Then Exit For
Next ii
End If
If anz 

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: Summenformeln per VBA - Version 3
27.03.2008 10:55:06
Petra
Guten Morgen Erich
vielen, vielen Dank für Deine Mühe!
Ich muß das Ganze erst einmal durchtesten. Ich melde mich dann wieder.
Einen schönen Tag noch
Petra

AW: Summenformeln per VBA - Version 3
27.03.2008 12:03:47
Petra
Hallo Erich
hat alles wunderbar geklappt! Nur ganz versteh ich die Arbeitsweise dieses Makros nicht. Wäre es Dir möglich, noch ein paar Erklärungen dazu zu liefern (besonders die Arrays)? Ich möchte doch verstehen, was da vor sich geht, auch im Hinblick einiger vielleicht später anstehender Modifikationen!
Liebe Grüße
Petra

167 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige