Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1324to1328
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 aus bestimmten Bereich

Summe aus bestimmten Bereich
20.08.2013 13:52:10
Tim
Hallo liebes Forum,
hier ist wahrscheinlich meine vorletzte Frage zu meinem ersten VBA-Projekt.
Nachdem ich die Vergleichsgeschichte jetzt langsam aber sicher verstanden habe, suche ich nach der Lösung für ein Problem, dass ich nicht beim Namen nennen kann.
Mit hilfe des beigefügten Bildes, versuche ich es zu umschreiben:
Userbild
Jedes Mal, wenn sich in Spalte A die Leitungsnummer ändert, möchte ich in Spalte K (genau da wo jetzt immer die Null steht) die Summe aller Leitungslängen (aus Spalte E) mit der selben Leitungsnummer ausrechnen. Sprich: Alle Längen zwischen den dicken Trennstrichen sollen summiert und jeweils in der letzten Zelle über dem Trennstrich aufgeschrieben werden.
Mein Code (siehe unten) ist soweit, …
… dass ich erkenne, wann sich die Leitungsnummer ändert
… das ich den Platz wählen kann, wo das Ergebnis stehen soll
Was mir fehlt:
… das Wissen, wie ich die Formel „=summe(E3:E8)“ so anwenden kann, dass der Bereich der ersten Berechnung automatisch auf die anderen Bereiche, also auf die anderen Leitungsnummern, übernommen wird.
Mein Code sieht so aus:
Sub Leitung_Gesamtlaenge()
' berechnet die Gesamtlänge der Leitung für jede Leitungsnummer
Columns("K:K").Select
Selection.NumberFormat = "#,##0"               ' Formatiert die Zielspalte als Zahl
Dim Zeilen_Zahl As Integer                          ' belegte Zeilen
Dim i As Integer                                    ' Zähler aktuelle Zeile
Dim l As Integer                                    ' Zähler aktuelle Zeile - 1
Dim Wert As Integer                                 ' Wert = Summe aller Leitungslängen  _
einer Leitungsnummer
Sheets("Tabelle1").Activate
Zeilen_Zahl = Cells(Rows.Count, "A").End(xlUp).Row
For i = 4 To Zeilen_Zahl
l = i - 1
If Range("A" & l)  Range("A" & i) Then
Range("K" & l).Select
' ActiveCell.FormulaR1C1 =                    ' 
Ich danke euch vielmals!

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Summe aus bestimmten Bereich
20.08.2013 15:25:08
ChrisL
Hi Tim
Ich würde es mit SUMMEWENN machen.
Range("K" & l).Formula = "=SUMIF(A:A,A" & l & ",E:E)"
cu
Chris

AW: Summe aus bestimmten Bereich
20.08.2013 17:07:45
Tim
Hallo Chris,
das funktioniert Einwandfrei! Vielen Dank.
Ich würde nur gern verstehen, warum es funktioniert und versuche deshalb, mir diesen Code zu erklären, was mir nicht ganz gelingt. Könntest du mir dabei bitte helfen?
=SUMIF(A:A,A" & l & ",E:E)
=SummeWenn(Spalte A, ...?
Wofür steht das dritte A und die Anführungszeichen?

AW: Summe aus bestimmten Bereich
20.08.2013 19:30:52
ChrisL
Hi Tim
in der Variable l steht deine Zeilenzahl.
Ist deine Schleife beispielsweise auf Zeile 5, wird daraus
=SUMIF(A:A,A5,E:E)
Da es ein Textstring ist, mit Anführungszeichen und das & verbindet die Strings.
strBeispiel = "Tim"
MsgBox "Hallo " & strBeispiel & ", alles klar? ;)"
cu
Chris

Anzeige
Uuuups.... bist ja doch noch da....
20.08.2013 19:46:38
rolfk
Bitte um Nachsicht, hatte nicht aktualisiert...
Rolf

AW: Uuuups.... bist ja doch noch da....
20.08.2013 22:17:47
Tim
Kein Problem,
ich danke dir für die Erklärung!
Einen schönen Abend!

Nachtrag....
20.08.2013 19:44:32
rolfk
Hallo Tim,
möchte mich zwar nicht unbedingt in eine bereits laufende Unterhaltung einmischen, aber ggf. ist Chris nicht mehr online, daher ein Nachtrag von mir:
Du Schreibst: das funktioniert Einwandfrei
Das kann meiner Meinung und Tests nach nicht sein, denn die jeweils letzte Zeile dürfte keine Summe erhalten..
Du müsstest die Schleife wie folgt ändern:
For i = 4 To Zeilen_Zahl
l = i + 1
If Range("A" & l) Range("A" & i) Then
Range("K" & i).Formula = "=SUMIF(A:A,A" & i & ",E:E)"
End If
Next i
Nun noch kurz zur Erklärung des VBA-Eintrages
der erste Teil "=SUMIF(A:A,A" ist der konstante Teil und wie Du schon richtig vermutet hast
=SummeWenn(A:A,A
das dritte A steht für den Buchstaben A der Zelladresse die sich zusammensetzt aus
Spalte A und jetzt folgend dem Inhalt der Variable i (in der neuen Formel). Die Variable wird verknüpft über jeweils ein Leerzeichen, verbunden mit dem &
Der Rest ",E:E)" ist dann wieder der konstante Teil für die Spalte E....
Das bedeutet, wenn i = 4 wäre, lautet die eingetragene Formel =SummeWenn(A:A,A4;E:E)
Ich hoffe, das war halbwegs verständlich ausgedrückt
Gruß Rolf

Anzeige
AW: Nachtrag....
20.08.2013 22:25:27
Tim
Hallo Rolf,
du hast recht, die letzte Zeile hatte keine Summe, deswegen habe ich diesen Fehler für mich selbst behoben, indem ich folgendes geschrieben hatte:
For i = 4 To Zeilen_Zahl + 1
Ich möchte mich entschuldigen, dass ich das nicht Kund getan habe, um den nachfolgenden Lesern eventuelle Probleme zu ersparen...
Auch dir danke ich für deine Erklärung, die mir langsam aber sicher Licht ins Dunkel bringt.
Einen Guten Abend wünsche ich!

AW: Summe aus bestimmten Bereich
23.08.2013 16:11:44
Tim
Hallo Chris,
Ich habe das SummeWenn-Prnzip einigermaßen verstanden. Allerdings nicht ganz.
So möchte ich die SummeWenn jetzt auf die Tabelle anwenden, um in Spalte I die Summe der Leitungslänge nach einer Änderung in den Spalten A,F oder G auszudrücken.
Erklärung am Bild:
Zeile 5 und Zeile 6 haben in Spalte A,F und G gleiche Werte.
Zeile 7 hat andere Werte.
Die Leitungslängen aus Zeile 5 und Zeile 6 sollen aufgrund der gleichen Daten addiert und in Zeile 6, Spalte I eingetragen werdn.
Den Code habe ich weitestgehend umgeschrieben. Unten steht der Auszug, in dem ich nicht weiterweiß. Das Programm erkennt die Änderungen und Trägt Werte an den richtigen Stellen ein. Nur die SummeWenn-Funktion muss verändert werden. Ich nehme an, das Kriterium A:A,A” & I & “ muss um die Kriterien F:F,F” & I & “ und G:G,G” & I & “ erweitert werden. Liege ich damit richtig? Wenn ja, wie stele ich das an?
Vielen Dank!!!
If Range("A" & l) & Range("F" & l) & Range("G" & l) Range("A" & i) & Range("F" & i) & Range("G" & i) Then
Range("I" & l).Formula = "=SUMIF(A:A,A" & l & ",E:E)"
End If

Anzeige
AW: Summe aus bestimmten Bereich
26.08.2013 19:01:14
ChrisL
Hi Tim
Ich bin grad ohne Excel unterwegs. Wenn ich Dich aber richtig verstehe, hast Du jetzt mehrere Kriterien, was mit SummeWenn leider nicht geht. Ab Excel-Version irgendwas gibt es SummeWenns, aber da müsste ich auch erstmal experimentieren. Bei dieser neuen Ausgangslage denke ich nun wäre es doch einfacher, sich die Zeilen zu merken und mit der normalen Summe zu arbeiten.
Sub iwas()
For l = 1 to 1000
If Range("A" & l) & Range("F" & l) & Range("G" & l)  Range("A" & l+1) & Range("F" & l+1) &  _
Range("G" & l+1) Then
Range("I" & l).Formula = "=SUM(A" & Merker & ":A" & l ")"
Merker = l+1
End If
Next l
End Sub

Anzeige
AW: Summe aus bestimmten Bereich
28.08.2013 11:23:44
Tim
Hallo Chris,
leider erhalte ich bei dieser Variante einen Syntaxfehler in der Formel-Zeile.
So weit es mein Verständnis zulässt, habe ich Versucht diesen zu finden.
Laut Forum beschränkt sich ein Syntaxfehler ja nur auf einen Schreibfehler...
aber ich konnte ihn leider nicht ausfindig machen.
Außerdem muss ich den "Merker" doch sicher noch deklarieren, oder?
Ich habe ihn als Integer deklariert. Lag ich da richtig?
Beste Grüße!

Ein Ansatz ohne VBA...
20.08.2013 15:37:02
rolfk
Hallo Tim,
das könnte man doch ohne VBA mit der folgenden Formel in Zelle K2 lösen:
=WENN(A3A2;SUMMEWENN(A:A;A2;E:E);"")
und dann runter kopieren.
Ich lasse die Frage jedoch noch offen....
Gruß Rolf

Anzeige
AW: Ein Ansatz ohne VBA...
20.08.2013 17:03:22
Tim
Hallo Rolf,
ich habe schon wieder vergessen zu erwähnen, dass es eine Tabelle mit mehreren hundert Positionen ist.
Und ein VBA-Code ist auch angemessen, weil die Tabelle in ihrem Umfang und Gliederung variiert.
Der Chris hat meine Frage schon beantwortet, auch mit einer SummeWenn-Funktion.
Ich danke dir für deine Hilfe!

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige