Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1168to1172
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

Summe einer Spalte - variabel

Summe einer Spalte - variabel
Ano
Hallo,
folgendes Problem:
In einer Spalte stehen von 1- max. 30 Zahlen untereinander, deren Summe ich in einer anderen Spalte benötige. Danach fängt ein neuer Block an.
Also
3
4
5
Summe: 12
4
9
Summe 13
4
Summe 4
6
7
7
3
2
Summe 25
Da die Anzahl der Summanden immer unterschiedlich sind und zwischen den Blöcken nur eine Leerzeile, ist mir bisher nur die Idee gekommen, eine Schleife zu programmieren, hat jemand eine bessere Idee?
AW: Summe einer Spalte - variabel
07.08.2010 11:34:15
Gerd
Hallo Boris,
ist die Anzahl der Blöcke konstant?
Wo, in Bezug auf einen einzelnen Block, soll die Ausgabe der Blocksumme in der Nachbarspalte erfolgen?
Gruß Gerd
AW: Summe einer Spalte - variabel
07.08.2010 11:43:57
JogyB
Hallo Boris,
Annahme war, dass die Zahlen in Spalte A stehen. Die Werte beginnen ab Zeile 2. Die Summen beginnen dann auch in der zweiten Zeile der Zielspalte.
{=SUMME(BEREICH.VERSCHIEBEN($A$1;KKLEINSTE(WENN($A$2:$A$20="";ZEILE($A$2:$A$20));ZEILE()-1);0; KKLEINSTE(WENN($A$2:$A$20="";ZEILE($A$2:$A$20));ZEILE())-KKLEINSTE(WENN($A$2:$A$20=""; ZEILE($A$2:$A$20));ZEILE()-1)-1)) }
Das kannst Du dann runterkopieren. Das setzt jetzt voraus, dass in A2 eine Leerzeile ist, ist das nicht der Fall, mußt Du die erste Formel anpassen, aber das bekommst Du als Excel-Profi sicher hin.
Gruß, Jogy
Anzeige
AW: Summe einer Spalte - variabel
07.08.2010 11:51:54
Christian
Hallo Boris,
ein Ansatz (mit einigen Fehlerabfängen;-)
Tabelle1

 AB
13 
24 
3512
4  
54 
6913
7  
844
9  
106 
117 
127 
133 
14225
15  
16  

Formeln der Tabelle
ZelleFormel
B1{=WENN(VERWEIS(2;1/($A$1:$A$65535<>""); ZEILE(A:A))+1<=ZEILE(); "";WENN(A2="";WENN(ANZAHL($A$1:A1)=ZEILE(); SUMME($A$1:A1); SUMME(INDEX(A:A;KGRÖSSTE(WENN($A$1:A1="";ZEILE($1:1)); 1)):INDEX(A:A;ZEILE()))); ""))}
Enthält Matrixformel:
Umrandende
{ } nicht miteingeben,
sondern Formel mit STRG+SHIFT+RETURN abschließen!
Matrix verstehen


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
MfG Christian
Anzeige
Autsch, zieht Ihr in den Krieg?
07.08.2010 12:13:48
silex1
Hallo,
sind das nicht zu schwere Geschütze für diese Aufgabe?
Arbeitsblatt mit dem Namen 'Tabelle1'
 AB
23 
34 
4512
5  
64 
7913
8  
944
10  
116 
127 
137 
143 
15225
16  
17  

ZelleFormatWert
B2Standard;; 

ZelleFormel
B2=WENN(A3="";SUMME($A$1:$A2)-SUMME($B$1:B1);"")
Diese Tabelle wurde mit Tab2Html (v2.4.1) erstellt. ©Gerd alias Bamberg

Friedliche Grüße, Rene
Anzeige
AW: Autsch, zieht Ihr in den Krieg?
07.08.2010 12:21:47
JogyB
Hallo Rene,
wenn ihm egal ist, dass die Summen über das ganze Blatt verteilt sind, dann ist die Lösung natürlich viel einfacher. Ich bin davon ausgegangen, dass er die Summen in der Zielspalte direkt untereinander haben will.
Gruß, Jogy
AW: Autsch, zieht Ihr in den Krieg?
07.08.2010 12:51:59
Ano
Vielen Dank für die extrem schnelle Antwort, alles funltioniert wunderbar, die Lösung mit den versetzten Summen war natürlich für mich die einfachste, ich hatte auch schon mal dran gedacht, nur nicht gedacht, dass die Umsetzung durch die versetzten relativen Bezüge einfach ist.
Die Matrixformel würde ich gerne verstehen, aber soweit reicht mein analytischer Verstand nicht :-) Solche Fragestellungen habe ich bisher dann mit VBA programmiert.
Vielen Dank nochmals!
Anzeige
AW: Autsch, zieht Ihr in den Krieg?
07.08.2010 14:04:26
JogyB
Hallo Boris,
hier nochmal eine verbesserte Version der Matrixformel, die Werte müssen dafür ab A2 stehen, A1 kann leer sein oder muss eine Überschrift haben, die keine Zahl ist (wenn es eine Zahl ist, dann muss ein ' davor).
{=SUMME(BEREICH.VERSCHIEBEN($A$1;KKLEINSTE(WENN(ISTZAHL($A$1:$A$20);"";ZEILE($A$1:$A$20));ZEILE($A1)) ;0;KKLEINSTE(WENN(ISTZAHL($A$1:$A$20);"";ZEILE($A$1:$A$20));ZEILE($A2)) -KKLEINSTE(WENN(ISTZAHL($A$1:$A$20);"";ZEILE($A$1:$A$20));ZEILE($A1))-1)) }
Nun zur Erklärung der Formel. Entscheiden ist dieser Teil hier, der wiederholt sich ja mehrfach:
KKLEINSTE(WENN(ISTZAHL($A$1:$A$20);"";ZEILE($A$1:$A$20));ZEILE($A1))
Durch die WENN Funktion wird eine Matrix aufgebaut, in der "" steht, wenn es eine Zahl ist und die Zeilennummer, wenn es keine Zahl ist - also im Falle Deiner Leerzeichen. Für die erste Summe benötige ich nun den Bereich zwischen dem ersten Leerzeichen (bzw. der Überschrift) und dem zweiten Leerzeichen, also der kleinsten und zweitkleinsten Zahl in dieser Matrix. Da die Formel natürlich für das runterkopieren geeignet sein soll, kann ich nicht einfach KKLEINSTE(...;1) verwenden, sondern mache das über einen Bezug, hier $A1 für 1 und §A2 für 2.
Nun liefert mir also
{=KKLEINSTE(WENN(ISTZAHL($A$1:$A$20);"";ZEILE($A$1:$A$20));ZEILE($A1)) } die Zeile des ersten Leerzeichens
{=KKLEINSTE(WENN(ISTZAHL($A$1:$A$20);"";ZEILE($A$1:$A$20));ZEILE($A2)) } die Zeile des zweiten Leerzeichens
Und nun muss ich nur noch mit BEREICH.VERSCHIEBEN den korrekten Bereich festlegen. Als Bezugspunkt setzte ich $A$1, also die erste Zeile. Die Summierung soll in der Zeile nach dem ersten Leerzeichen beginnen, also muss ich ausgehend von $A$1 genau um die Zeilennummer des ersten Leerzeichens verschieben.
Die Größe des Bereiches sind genau die Zeilen zwischen dem ersten und zweiten Leerzeichen, also die Differenz der beiden Zeilen - 1. Um das ganze nun noch die Summe und schon war es das.
Das ganze kann man nun auch noch fehlerredundant auslegen, so dass man auch in mehr Zeilen die Formel eintragen kann, als Blöcke vorhanden sind. Das ging z.B. so (Summen stehen in Spalte J):
=WENN((SUMME(J$1:J1)>=SUMME($A$1:$A$20))+ISTFEHLER(KKLEINSTE(WENN(ISTZAHL($A$1:$A$20);""; ZEILE($A$1:$A$20));ZEILE($A2)));"";SUMMEWENN(BEREICH.VERSCHIEBEN($A$1; KKLEINSTE(WENN(ISTZAHL($A$1:$A$20);"";ZEILE($A$1:$A$20));ZEILE($A1));0; KKLEINSTE(WENN(ISTZAHL($A$1:$A$20);"";ZEILE($A$1:$A$20));ZEILE($A2)) -KKLEINSTE(WENN(ISTZAHL($A$1:$A$20);"";ZEILE($A$1:$A$20));ZEILE($A1))-1);"0"))
Das summiert dann einfach zuerst mal alle Zahlen im relevanten Bereich und vergleicht das mit der bisherigen Summe. Zudem wird noch überprüft, ob das zweite Leerzeichen gefunden werden kann. Hier wird nun SUMMEWENN statt SUMME verwendet, da die Verwendung von SUMME in einer anderen Funktion (hier WENN) bei Matrixfunktionen nur noch Unsinn ergibt. Da in dieser SUMMEWENN der Suchbereich auch aufsummiert wird, hat man mit "0" natürlich eine wunderbare Bedingung (ob man Nullen mit aufsummiert oder nicht ist ja egal). Hätte man den Fall, dass ein anderer Bereich aufsummiert werden müsste, dann muss man sich die Bedingung natürlich überlegen, aber dann geht sowas wie " Gruß, Jogy
Anzeige
AW: Autsch, zieht Ihr in den Krieg?
07.08.2010 16:07:17
BoskoBiati
Hallo,
das geht auch alles etwas kürzer:
Arbeitsblatt mit dem Namen 'Tabelle2'
 ABC
151414
241818
332727
424040
5   
67  
76  
85  
9   
104  
113  
122  
133  
144  
155  
166  
17   
187  
198  
209  
217  
225  
234  
24   
25   
264  
275  
286  
29   
303  
314  
32   

ZelleFormel
B1{=SUMME(BEREICH.VERSCHIEBEN($A$1;;;KKLEINSTE(WENN($A$1:$A$1000="";ZEILE($A$1:$A$1000));ZEILE(A1))))}
C1{=SUMME(BEREICH.VERSCHIEBEN($A$1;;;KKLEINSTE(WENN($A$1:$A$1000="";ZEILE($A$1:$A$1000));ZEILE(A1))))}
B2{=SUMME(BEREICH.VERSCHIEBEN($A$1;;;KKLEINSTE(WENN($A$1:$A$1000="";ZEILE($A$1:$A$1000));ZEILE(A2))))-SUMME($B$1:B1)}
C2{=SUMME(BEREICH.VERSCHIEBEN($A$1;KKLEINSTE(WENN($A$1:$A$1000="";ZEILE($A$1:$A$1000));ZEILE(A1));;KKLEINSTE(WENN($A$1:$A$1000="";ZEILE($A$1:$A$1000));ZEILE(A2))-KKLEINSTE(WENN($A$1:$A$1000="";ZEILE($A$1:$A$1000));ZEILE(A1))))}
Achtung, Matrixformel enthalten!
Die geschweiften Klammern{} werden nicht eingegeben.
Verlassen Sie den Zelleneditor mit Strg+Shift + Enter, statt Enter alleine.
Diese Tabelle wurde mit Tab2Html (v2.4.1) erstellt. ©Gerd alias Bamberg

Gruß
Bosko
Anzeige
und noch kürzer:
07.08.2010 16:14:25
BoskoBiati
Hallo,
nochmal um ein Viertel kürzer:
Tabelle2

 D
114
218

Formeln der Tabelle
ZelleFormel
D1{=SUMME(INDEX(A:A;1):INDEX(A:A;KKLEINSTE(WENN($A$1:$A$1000="";ZEILE($A$1:$A$1000)); ZEILE(A1))))}
D2{=SUMME(INDEX(A:A;KKLEINSTE(WENN($A$1:$A$1000="";ZEILE($A$1:$A$1000)); ZEILE(A1))):INDEX(A:A;KKLEINSTE(WENN($A$1:$A$1000="";ZEILE($A$1:$A$1000)); ZEILE(A2))))}
Enthält Matrixformel:
Umrandende
{ } nicht miteingeben,
sondern Formel mit STRG+SHIFT+RETURN abschließen!
Matrix verstehen


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Gruß
Bosko
Anzeige
AW: und noch kürzer:
07.08.2010 16:26:31
JogyB
Hallo Bosko,
das sind echt schöne Lösungen. Ich muss mir glaube ich endlich mal das Wort "Rekursion" in Spiegelschrift auf die Stirn schreiben, daran denke ich nie.
Und die Zellen einfach direkt über Index anzugeben anstatt umständlich über Bereich.Verschieben zu gehen hätte mir auch einfallen können... wobei hier interessant wäre, was bei großen Datenmengen schneller ist (gegen die Rekursion verlieren aber wohl beide).
Gruß, Jogy
AW: und noch kürzer:
07.08.2010 16:35:05
FP
Hallo Edgar,
und wie gefällt dir das?
Tabelle2
 ABC
11 15
22 14
33 24
44 10
55 3
6  9
73 0
85 0
96 0
10  0
112  
125  
138  
149  
15   
161  
172  
183  
194  
20   
211  
222  
23   
249  
 
Diagramm - Grafik - Excel Tabellen einfach im Web darstellen    Excel Jeanie HTML  3.0    Download  
Formeln dazu - C2 nach unten kopieren
Tabelle2
 C
115
214
Formeln der Tabelle
C1 : {=SUMME(A1:INDEX(A:A;VERGLEICH(1;--(A1:A99=""); 0)-1))}
C2 : {=SUMME(A$1:INDEX(A:A;KKLEINSTE(WENN(A$1:A$999="";ZEILE($1:$999)); ZEILE(C2))))-SUMME(C$1:C1)}
Enthält Matrixformel:
Umrandende
{ } nicht miteingeben,
sondern Formel mit STRG+SHIFT+RETURN abschließen!
 
Diagramm - Grafik - Excel Tabellen einfach im Web darstellen    Excel Jeanie HTML  3.0    Download  
Anzeige
AW: und noch kürzer:
07.08.2010 18:25:01
BoskoBiati
Hallo Franz,
darauf habe ich schon gewartet! Ich wusste, dass Dir noch was einfällt. Auf die Formel in C1 wäre ich nicht gekommen, die in C2 hatte ich schon fast so im Kopf, allerdings so in INDEX(A:A;1) verannt, dass mir nicht mehr aufgefallen ist, dass das ja A1 ist.
Gruß
Bosko
und noch etwas kürzer
07.08.2010 19:08:40
FP
Hallo Edgar,
{=SUMME(A$1:INDEX(A:A;KKLEINSTE((A$1:A$99"")*999+ZEILE($1:$99);ZEILE(C2)));-C$1:C1)}
ist mir auch erst jetzt aufgefallen, dass die 2. SUMME überflüssig ist.
Servus aus dem Salzkammergut
Franz
Sparfuchs
07.08.2010 19:12:00
BoskoBiati
Hallo Franz,
so werden aus 246 Zeichen ganze 87. Wenn man beim Einkauf auch solche Sparpotenziale hätte.
Gruß
Bosko
Anzeige
was heißt hier Sparfuchs ;-)
07.08.2010 20:21:59
FP
Hallo Edgar,
... dann sieh dir mal diese nette kleine Formel an:
{=WENN(MAX(SUMME(A1:INDEX(A:A;VERGLEICH(1;--(A1:A99="");0)-1));TEILERGEBNIS(9; BEREICH.VERSCHIEBEN(A$1;;;KKLEINSTE((A$1:A$99"")*999+ZEILE($1:$99);ZEILE(C$2:C$9)))) -TEILERGEBNIS(9;BEREICH.VERSCHIEBEN(A$1;;;KKLEINSTE((A$1:A$99"")*999+ZEILE($1:$99);ZEILE(C$1:C$8))) ))=SUMME(A1:INDEX(A:A;VERGLEICH(1;--(A1:A99="");0)-1));1;VERGLEICH(MAX(SUMME(A1:INDEX(A:A; VERGLEICH(1;--(A1:A99="");0)-1));TEILERGEBNIS(9;BEREICH.VERSCHIEBEN(A$1;;;KKLEINSTE((A$1:A$99"") *999+ZEILE($1:$99);ZEILE(C$2:C$9))))-TEILERGEBNIS(9;BEREICH.VERSCHIEBEN(A$1;;; KKLEINSTE((A$1:A$99"")*999+ZEILE($1:$99);ZEILE(C$1:C$8)))));TEILERGEBNIS(9;BEREICH.VERSCHIEBEN(A$1; ;;KKLEINSTE((A$1:A$99"")*999+ZEILE($1:$99);ZEILE(C$2:C$9))))-TEILERGEBNIS(9; BEREICH.VERSCHIEBEN(A$1;;;KKLEINSTE((A$1:A$99"")*999+ZEILE($1:$99);ZEILE(C$1:C$8))));0)+1) }
was die macht? Sie sucht welcher Zahlenblock das Maximum ergibt.
Beispiel:
Tabelle2
 ABCDE
11 15  
220107 1014
3301014 3
44010  
5503  
6 159  
7300  
8500  
99900  
10 1070  
1120   
1250   
1380   
149990   
15 1014   
1610   
1720   
1830   
1940   
20 10   
2110   
2220   
23 3   
2490   
25 9   
 
Diagramm - Grafik - Excel Tabellen einfach im Web darstellen    Excel Jeanie HTML  3.0    Download  
Ist natürlich nur eine Spielerei ;-)
Servus aus dem Salzkammergut
Franz
@Bosko : Sparen beim Einkauf geht schon...
08.08.2010 02:07:48
NoNet
Hallo Bosko,
Wenn man beim Einkauf auch solche Sparpotenziale hätte. Das geht schon, wenn man beim Einkauf "nur" 87 Artikel anstatt 246 Artikel in den Einkauswagen packt ;-)
Natürlich sollten es dann nicht unbedingt nur Hummer, Champus und Kaviar sein....
Gruß, NoNet
da ist man mal stolz auf seine schöne Formel...
07.08.2010 20:10:49
JogyB
...und dann kommt Ihr Spielverderber. *indieeckegehundschmoll*
Gruß, Jogy
AW: da ist man mal stolz auf seine schöne Formel...
07.08.2010 20:15:47
BoskoBiati
Hallo Jogy,
ich hätte da ein paar Haribo´s, kommst Du dann wieder aus der Ecke? Das Formelverkürzungsspiel ist doch eigentlich so lustig.
Jetzt geh´ich auf´s Fest.
Gruß
Bosko
Kirschohrringe?
07.08.2010 22:41:34
JogyB
Dann komme ich gleich wieder raus ;)
Gruß, Jogy
AW: Autsch, zieht Ihr in den Krieg?
07.08.2010 12:59:20
Christian
Hallo Rene,
von hinten durch die Brust ins Auge, da sieht man mal das man zu kompliziert denkt!
Wenn Krieg, dann nur so :-) (ab 3:30)
http://www.youtube.com/watch?v=H-COs_Sa9W8
MfG Christian

310 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige