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

Makro bezügl. Aufsummieren meherer zellen

Makro bezügl. Aufsummieren meherer zellen
11.11.2005 04:09:02
Max
Hallo liebe Leute,
ich hab mir ein makro geschrieben, das mir meine excel-sheet in ein besonderes format bringt (nachdem ich es importiert habe).
die EXCELfile hab ich euch mal hochgeladen:
http://3321.is3.ntz.de/pdf/SumUpMakroExcel.xls
Wenn ihr euch die File anguckt, seht ihr mehrere Blöcke mit zahlen. Ich möchte jetzt, dass diese Blöcke jeweils zu einer "* Total"-Line aufsummiert werden, und danach dann die einzelnen Total-Lines zu einer "** Grand-Total"-line aufsummiert (siehe Bsp.file)
Jetzt hat aber nicht jeder Block, wie in der Bsp.file, die gleiche anzahl an zeilen, und man weiß auch nicht, wieviele Blöcke es gibt. Man weiß aber, dass es immer 8 SPalten zum aufsummieren gibt...
Ist es jetzt möglich, ein makro zu schrieben, das immer bei der zelle a3 anfängt zu suchen, wieviele blöcke es gibt, dann die 8 spalten innerhalb eines jeden blocks zu einer "TOTAL"-line aufsummiert und dann anschließend alle total lines zu einer grand-total-line aufsummiert.... möglichst per schleife... Das wichtige ist, dass es auch teilweise LEERE zellen geben kann, aber man sieht ja anhand der beschreibungen in spalte A wieviele elemente zu einem block gehören...
Das ganze soll dann passieren, wenn ich den Hotkey Strg+R drücke.
Kann mir da jemand helfen?
das wäre super!
Danke vielams schon im voraus,
Max

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

Betreff
Datum
Anwender
Anzeige
AW: Makro bezügl. Aufsummieren meherer zellen
11.11.2005 07:59:26
ede
guten morgen max,
dann teste mal dieses makro. immer wenn eine leere zeile kommt, wird die zwischensumme berechnet. am ende die gesamtsumme.

Sub total()
vonZeile = 3    'Startzeile
bisZeile = Cells(65536, 1).End(xlUp).Row   'EndZeile
Dim TotalSummen(7)
Dim GesamtSummen(7)
For i = vonZeile To bisZeile + 1
If Cells(i, 1) = "" Then
'neuer Block hier Zwischensumme setzen
'totalsummen ausgeben
Cells(i, 1) = "*Total"
For y = 1 To 7
Cells(i, y + 1) = TotalSummen(y)
'TotalSummen aufaddieren
GesamtSummen(y) = GesamtSummen(y) + TotalSummen(y)
'TotalSummen wieder auf 0
TotalSummen(y) = 0
Next y
End If
For y = 1 To 7
TotalSummen(y) = Cells(i, y + 1)
Next y
Next i
'GesamtSummen ausgeben
Cells(bisZeile + 2, 1) = "*Gesamt"
For y = 1 To 7
Cells(bisZeile + 2, y + 1) = GesamtSummen(y)
Next y
End Sub

gruss
Anzeige
MAkro nochmal,
11.11.2005 08:24:07
ede
sorry, war noch ein fehler drin, bitte mal dieses testen

Sub total()
vonZeile = 3    'Startzeile
bisZeile = Cells(65536, 1).End(xlUp).Row   'EndZeile
Dim TotalSummen(7)
Dim GesamtSummen(7)
For i = vonZeile To bisZeile
If Cells(i, 1) = "" Then
'neuer Block hier Zwischensumme setzen
'totalsummen ausgeben
Cells(i, 1) = "*Total"
For y = 1 To 7
Cells(i, y + 1) = TotalSummen(y)
'TotalSummen wieder auf 0
TotalSummen(y) = 0
Next y
End If
'Zeilen addieren
For y = 1 To 7
TotalSummen(y) = TotalSummen(y) + Cells(i, y + 1)
GesamtSummen(y) = GesamtSummen(y) + Cells(i, y + 1)
Next y
Next i
'letzte TotalSummen ausgeben
Cells(bisZeile + 1, 1) = "*Total"
For y = 1 To 7
Cells(bisZeile + 1, y + 1) = TotalSummen(y)
Next y
'GesamtSummen ausgeben
Cells(bisZeile + 2, 1) = "*Gesamt"
For y = 1 To 7
Cells(bisZeile + 2, y + 1) = GesamtSummen(y)
Next y
End Sub

gruss
Anzeige
AW: MAkro nochmal,
11.11.2005 09:27:32
Max
Hallo Ede!
Dein Script klappt soweit super!
Nur ein pro blem hab ich noch.
Da ich meine Daten importiere ist jeweils die jeweilige Block-Total-Line und die Gesamt-Total-Line schon vorgegeben (und da stehen auch schon Inhalte in den Zellen, nur eben nicht die richtigen :()
Die Block-Total-Lines heißen auch nicht "* Total", sondern jeweils anders, z.B. "* Gesamtzahl Autos", "* Gesamtzahl Personen", "* Nzahl an grundstücken"...
Die Gesamt-Total Line heißt wie folgt: "** Total"
Kannst du dein Script so modifizieren, dass es den Block nur soweit aufsummiert, bis eine Zeile kommt, die mit "*" (also ein Block-Total-Line) beginnt und dann dort in dieser zeile die ergebnisse reinschribst (also die bestehen ergebnisse überschreibst). Danach kommt dann immer eine leerzeile, bevor der nächste block beginnt...
Und könntest du dann ganz am ende die Grand-Total-Line ebenfalls überscrheiben lassen mit den Summen der Block-Total-Lines. Die Grand-Total Line erkennt man daran, dass sie mit "**" beginnt, also z.B. "** Total".
Das wäre echt super, denn dann funktionniert alles perfekt!! :) Achso ja, kannst du es so machen, dass man nachher in den jeweiligen Totallines nicht nur das ergebnis der aufsummierung sieht, sondern bei doppelklick die formel? :)
Hoffe das geht! Aber trotzdem schonmal vielen Dank für dein bemühen!!!!!!!!!!!!!!!!!!!!!!!
Danke, Max
Anzeige
AW: MAkro nochmal,
11.11.2005 09:43:53
Max
Hi nochmal, hab bei meiner antwort auf deinen code noch was vergessen...
Bei mir macht dein Script einen fehler: Es summiert den ersten Block richtig, die summe des zweiten blockes ist aber genau um die summe des ersten blockes zu hoch...
z.B.
feld1 12
feld2 13
SUMMME 25
feld3 10
feld4 5
SUMME 40
Könntest du das noch korrigieren? Danke :)
PS: Es kann sein,dass ich unter der "** Grandtotal" line noch kommentare und so angebe... könntest du also dein script vielleicht noch so anpassen, das es die aufsummierung nur so lange macht, bis es die grandtotal zeile findet (erkennbar daran, dass sie mit zwei ** beginnt: "** Total") und dann alles was unter der grandtotal zeile kommt nicht mehr beachtet...
sprich:
starting-cell: a3
ending-cell: jene zelle, in der das erste mal "**" vorkommt...
ich weiß, kompliziert, aber du würdest mir wirklich seh weiterhelfen...
Danke, Max
Anzeige
AW: MAkro nochmal,
11.11.2005 11:02:49
ede
hallo, habe dein nachricht eben gelesen.
bin noch am basteln.
gruss
AW: neue Version
11.11.2005 11:33:51
ede
hallo max,
habe eine neue version gebastelt.
-leere zeilen werden überlesen!
-wenn zeile mit * beginnt, dann zwischensumme überschrieben
-wenn zeile mit ** beginnt, dann gesamtsumme überschrieben
da ich die zwischensummen berechne, kann ich in den zellen nicht eine formel schreiben. also deinen zweiten wunsch kann ich dir nicht erfüllen.
bitte nochmal testen und prüfen. rückmeldung wäre super

Sub total()
vonZeile = 3    'Startzeile
bisZeile = Cells(65536, 1).End(xlUp).Row   'EndZeile
Dim TotalSummen(7)
Dim GesamtSummen(7)
For i = vonZeile To bisZeile
If Cells(i, 1) <> "" Then 'keine LEERZEILEN
If Left(Cells(i, 1), 2) <> "**" Then  'DIES IST DIE SUMMENZEILE
If Left(Cells(i, 1), 1) = "*" Then
'neuer Block hier Zwischensumme setzen
'totalsummen ausgeben
'Cells(i, 1) = "*Total"
For y = 1 To 7
Cells(i, y + 1) = TotalSummen(y)
'TotalSummen wieder auf 0
TotalSummen(y) = 0
Next y
Else
'Zeilen addieren
For y = 1 To 7
TotalSummen(y) = TotalSummen(y) + Cells(i, y + 1)
GesamtSummen(y) = GesamtSummen(y) + Cells(i, y + 1)
Next y
End If
Else
'GesamtSummen ausgeben
For y = 1 To 7
Cells(i, y + 1) = GesamtSummen(y)
Next y
End If ' "**"
End If 'LeerZeile
Next i
End Sub

gruss
Anzeige
AW: neue Version
11.11.2005 12:28:24
ede
hallo nochmal,
hier eine version mit formeln für zwischensummen (*)

Sub total()
Application.Volatile
vonZeile = 3    'Startzeile
bisZeile = Cells(65536, 1).End(xlUp).Row   'EndZeile
Dim TotalSummen(7)
Dim GesamtSummen(7)
xxgesamt1 = "=sum("
For i = vonZeile To bisZeile
If Cells(i, 1) <> "" Then 'keine LEERZEILEN
If Left(Cells(i, 1), 2) <> "**" Then  'DIES IST DIE SUMMENZEILE
If Left(Cells(i, 1), 1) = "*" Then
'neuer Block hier Zwischensumme setzen
'totalsummen ausgeben
For y = 1 To 7
' hier die Zwischensumme als  Werte ausgeben
'Cells(i, y + 1) = TotalSummen(y)
' TotalSummen wieder auf 0
TotalSummen(y) = 0
Next y
'hier als Formeln setzen
Cells(i, 2).Formula = "=Sum(B" & i - xxDelta & ":B" & i - 1 & ")"
Cells(i, 3).Formula = "=Sum(C" & i - xxDelta & ":C" & i - 1 & ")"
Cells(i, 4).Formula = "=Sum(D" & i - xxDelta & ":D" & i - 1 & ")"
Cells(i, 5).Formula = "=Sum(E" & i - xxDelta & ":E" & i - 1 & ")"
Cells(i, 6).Formula = "=Sum(F" & i - xxDelta & ":F" & i - 1 & ")"
Cells(i, 7).Formula = "=Sum(G" & i - xxDelta & ":G" & i - 1 & ")"
Cells(i, 8).Formula = "=Sum(H" & i - xxDelta & ":H" & i - 1 & ")"
xxDelta = 0
'Formel für gesamt bauen
xxgesamt1 = xxgesamt1 & "B" & i & ";"
Else
'Zeilen addieren
xxDelta = xxDelta + 1
For y = 1 To 7
TotalSummen(y) = TotalSummen(y) + Cells(i, y + 1)
GesamtSummen(y) = GesamtSummen(y) + Cells(i, y + 1)
Next y
End If
Else
'GesamtSummen ausgeben
For y = 1 To 7
Cells(i, y + 1) = GesamtSummen(y)
Next y
' Gesamtsummen als Formel
xxgesamt1 = Mid(xxgesamt1, 1, Len(xxgesamt1) - 1) & ")"
'MsgBox xxgesamt1
'Cells(i, 2).Formula = xxgesamt1   ' birngt fehler 400!!!!!!!!!
End If ' "**"
End If 'LeerZeile
Next i
End Sub

gruss und viel erfolg
ede
Anzeige
AW: neue Version
14.11.2005 05:02:28
Max
Hallo Ede,
sorry, dass ich mich jetzt erst melde, aber ich war übers wochenende in singapur ;-) Da konnt ich leider das excel-makro nicht testen! :)
Zum Makro:
Vielen vielen Dank!!! Das Ding läuft astrein! Es gibt nur zwei kleinere anpassungen, die mir jetzt beim testen noch auffallen:
1.)Da ich die daten importiere, und da manchmal eben auch prozentwerte importiertt werden, will ich diese prozentwerte natürlich nicht aufsummieren. Deshalb gilt folgende allgemine regel: Das Programm so wie besiher lassen, aber könntest du bitte NUR die folgenden Spalten aufsummieren lassen: B,C,D,G,H,I,K,L ? Dann wäre das prozentproblem gelöst.... :)
2.) Ganz wichtig: Nach der ERSTEN Grand-Total-Zeile ("** XXXXXX") muss das programm aufhören. D.h. es gibt bei mir eine erste grandtotol-zeile und dann kommen evtl. noch weitere zellen drunter, und dann wieder eine grandtotalzeile, die auch mit "**" beginnt... Das programm soll das aufsummieren aber NUR bis zu ERSTEN Grandtotal zeile "**" durchführen, wenn es die gefunden hat, dann danach auf keinen fall weitermachen.
Wer das möglich?
Ich glaub dann haben wirs geschafft!!! :) :)
thank you so much, hilfst mir mit dem makro enorm!!!!!!!
Danke,
Max
Anzeige
AW: neue Version
21.11.2005 07:10:24
Max
Hallo Ede, kannst du mir nicht schnell noch mit dem letzten "Problem" in dem makro helfen? Bitte! :)
Danke, Max

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige