Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: 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!

Anzeige

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?

Anzeige
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!

Anzeige
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!

Anzeige
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

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!
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Summe aus bestimmten Bereichen in Excel berechnen


Schritt-für-Schritt-Anleitung

Um die Summe aus einem bestimmten Bereich in Excel zu berechnen, kannst Du die Funktion SUMMEWENN oder eine VBA-Lösung verwenden. Hier ist eine Schritt-für-Schritt-Anleitung mit der VBA-Methode:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject (DeineDatei.xlsx)" > Einfügen > Modul.

  3. Kopiere den folgenden Code in das Modul:

    Sub Leitung_Gesamtlaenge()
       Columns("K:K").Select
       Selection.NumberFormat = "#,##0"
       Dim Zeilen_Zahl As Integer
       Dim i As Integer
       Dim l As Integer
    
       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).Formula = "=SUMIF(A:A,A" & l & ",E:E)"
           End If
       Next i
    End Sub
  4. Führe das Makro aus: Schließe den VBA-Editor und gehe zurück zu Excel. Drücke ALT + F8, wähle Leitung_Gesamtlaenge und klicke auf Ausführen.


Häufige Fehler und Lösungen

  • Fehler: Keine Summe in der letzten Zeile
    Lösung: Stelle sicher, dass Deine Schleife bis zur letzten Zeile läuft. Ändere die Schleife von For i = 4 To Zeilen_Zahl auf For i = 4 To Zeilen_Zahl + 1.

  • Syntaxfehler in der Formel
    Überprüfe, ob Du beim Verknüpfen von Strings in VBA die richtigen Anführungszeichen und das &-Zeichen verwendest.


Alternative Methoden

Falls Du kein VBA verwenden möchtest, kannst Du auch die SUMMEWENN-Funktion direkt in Excel nutzen:

  1. Gehe zu Zelle K2.
  2. Verwende die Formel:
    =WENN(A3<>A2;SUMMEWENN(A:A;A2;E:E);"")
  3. Ziehe die Zelle nach unten, um die Formel auf die restlichen Zellen anzuwenden.

Diese Methode ist besonders nützlich, wenn Du schnell eine Summe bis zu einer bestimmten Zeile berechnen möchtest.


Praktische Beispiele

  1. Beispiel mit VBA:

    • Du hast eine Tabelle mit Leitungslängen in Spalte E und möchtest die Summe für jede Leitungsnummer in Spalte K berechnen.
    • Der oben angegebene VBA-Code erledigt dies automatisch.
  2. Beispiel ohne VBA:

    • In Zelle K2 verwendest Du die Formel =WENN(A3<>A2;SUMMEWENN(A:A;A2;E:E);""), um die Summe für jede Leitungsnummer zu berechnen.

Tipps für Profis

  • Nutze den Excel Shortcut für die Summe ALT + =, um schnell die Summe eines Bereichs zu bilden.
  • Achte darauf, dass Deine Daten gut strukturiert sind, um Fehler bei der Summenbildung zu vermeiden.
  • Wenn Du mit großen Datenmengen arbeitest, prüfe die Performance Deiner Formeln und VBA-Skripte, um eine schnelle Ausführung zu gewährleisten.

FAQ: Häufige Fragen

1. Wie kann ich die Summe bis zu einer bestimmten Zeile in Excel berechnen?
Verwende die Funktion =SUMME(Bereich) oder =SUMMEWENN mit den entsprechenden Kriterien.

2. Gibt es eine Möglichkeit, die Summe in einer Word-Tabelle zu bilden?
Ja, in Word kannst Du die Funktion =SUMME(…) verwenden, um Summen in einer Tabelle zu berechnen.

3. Was mache ich, wenn ich mehrere Kriterien in meiner Summe berücksichtigen möchte?
Verwende SUMMEWENNS, um mehrere Kriterien in einer einzigen Formel zu kombinieren.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige