Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA Summe einer Spalte

VBA Summe einer Spalte
28.05.2015 14:49:16
Niclas
Hallo Community,
angenommen ich möchte in C1 mir die Summe aller Werte aus Spalte S anzeigen lassen ohne zu wissen wie groß der Bereich ist, sprich von S2 bis Ende der Tabelle, wie könnte der entsprechende Code dafür lauten.
Ich habe es mit dem Macrorecorder versucht aber das Ergebnis ist nicht umsetzbar auf andere Tabellen in der Datei.
Der Code müsste eigentlich sagen ,,Schreibe mir die Summe aller positiven Werte aus S2 bis Tabellenende im aktuellen Sheet". Leider hapert es mit der Umsetzung aufgrund mangelnder VBA Kenntnisse.
Wenn mir jemand helfen könnte wäre ich sehr dankbar.
Euer Niclas

Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Summe einer Spalte
28.05.2015 14:54:22
Hajo_Zi
warum nicht einfach Summewenn()? S2:S1048576

AW: VBA Summe einer Spalte
28.05.2015 15:05:37
Niclas
Folgendes:
Range("E1").Value = WorksheetFunction.SumIf(Range("S2:S1000"), ">0", Range("S2:S1000"))
funktioniert soweit. Ich würde die Zelle jedoch noch etwas formatieren.Ich weiß das das zB über with geht, jedoch kenne ich nicht den genauen Code. Wie muss ich schreiben bzw die Zelle E1 konkret ansprechen und diese soll dann das machen:
.Interior.Color = vbYellow
.Borders(xlEdgeTop).Weight = xlThick
.Borders(xlEdgeBottom).Weight = xlThick
.Borders(xlEdgeRight).Weight = xlThick
.Borders(xlEdgeLeft).Weight = xlThick
Niclas

Anzeige
AW: VBA Summe einer Spalte
28.05.2015 15:04:01
Michael
Hallo Niklas!
In VBA zB so: In die Zelle C1 wird die Summe der Spalte B wie folgt geschrieben:
 'Summe der gesamten Spalte B
Range("C1").Value = WorksheetFunction.Sum(Range("B:B"))
'Summe von B2 bis Ende B2 OHNE Leerzeilen
Range("C1").Value = WorksheetFunction.Sum(Range(Cells(2, 2), Cells(2, 2).End(xlDown)))
'Summe von B2 bis letzte Zeile B MIT Leerzeilen
Range("C1").Value = WorksheetFunction.Sum(Range("B2:B" & Range("B:B").SpecialCells(xlCellTypeLastCell).Row))
LG
Michael

Anzeige
AW: VBA Summe einer Spalte
28.05.2015 15:05:28
Michael
Hallo Niclas!
In VBA zB so (Zelle C1 soll den Summenwert erhalten):
'Summe der gesamten Spalte B
Range("C1").Value = WorksheetFunction.Sum(Range("B:B"))
'Summe von B2 bis Ende B2 OHNE Leerzeilen
Range("C1").Value = WorksheetFunction.Sum(Range(Cells(2, 2), Cells(2, 2).End(xlDown)))
'Summe von B2 bis letzte Zeile B MIT Leerzeilen
Range("C1").Value = WorksheetFunction.Sum(Range("B2:B" & Range("B:B").SpecialCells(xlCellTypeLastCell).Row))
LG
Michael

Anzeige
AW: VBA Summe einer Spalte
28.05.2015 15:05:34
Michael
Hallo Niclas!
In VBA zB so (Zelle C1 soll den Summenwert erhalten):
'Summe der gesamten Spalte B
Range("C1").Value = WorksheetFunction.Sum(Range("B:B"))
'Summe von B2 bis Ende B2 OHNE Leerzeilen
Range("C1").Value = WorksheetFunction.Sum(Range(Cells(2, 2), Cells(2, 2).End(xlDown)))
'Summe von B2 bis letzte Zeile B MIT Leerzeilen
Range("C1").Value = WorksheetFunction.Sum(Range("B2:B" & Range("B:B").SpecialCells(xlCellTypeLastCell).Row))
LG
Michael

Anzeige
AW: VBA Summe einer Spalte
28.05.2015 16:57:53
Niclas
Hallo Michael,
und wie müsste ich die Formel umändern wenn ich nur Werte größer 0 in der besagten Spalte summiert haben will?
Niclas

AW: VBA Summe einer Spalte
28.05.2015 17:21:34
Michael
Hallo Niclas!
Dann so (wobei Du damit eher negative Werte ausschließt, denn ein 0-Wert ändert Deine Summe sowieso nicht): Varianten verstehen sich wie oben
Range("C1").Value = WorksheetFunction.SumIf(Range("B:B"), ">0")
Range("C1").Value = WorksheetFunction.SumIf(Range(Cells(2, 2), Cells(2, 2).End(xlDown)), ">0")
Range("C1").Value = WorksheetFunction.SumIf(Range("B2:B" & Range("B:B").SpecialCells(xlCellTypeLastCell).Row), ">0")
LG
Michael
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

VBA Summe einer Spalte


Schritt-für-Schritt-Anleitung

Um die Summe einer bestimmten Spalte in Excel mithilfe von VBA zu berechnen, kannst du die folgenden Schritte ausführen:

  1. Öffne den Visual Basic for Applications (VBA) Editor in Excel. Dies kannst du tun, indem du ALT + F11 drückst.
  2. Füge ein neues Modul hinzu, indem du in der Menüleiste auf Einfügen und dann auf Modul klickst.
  3. Kopiere den folgenden Code in das Modul:
Sub SummeVonSpalte()
    ' Summe der gesamten Spalte S
    Range("C1").Value = WorksheetFunction.Sum(Range("S:S"))

    ' Summe von S2 bis zum Ende der Spalte S ohne Leerzeilen
    Range("C1").Value = WorksheetFunction.Sum(Range(Cells(2, 19), Cells(2, 19).End(xlDown)))

    ' Summe von S2 bis zur letzten Zeile mit Leerzeilen
    Range("C1").Value = WorksheetFunction.Sum(Range("S2:S" & Range("S:S").SpecialCells(xlCellTypeLastCell).Row))
End Sub
  1. Schließe den VBA-Editor und führe das Makro aus, um die Summe in Zelle C1 anzuzeigen.

Häufige Fehler und Lösungen

  • Fehler: Laufzeitfehler 1004: Anwendung oder Objekt definiert Fehler.

    • Lösung: Stelle sicher, dass die angegebene Range korrekt ist. Überprüfe, ob die Spalte tatsächlich Werte enthält.
  • Fehler: Summe ergibt 0, obwohl Werte vorhanden sind.

    • Lösung: Achte darauf, dass die Zellen tatsächlich numerische Werte enthalten und keine Text- oder Leerzeichen.

Alternative Methoden

Du kannst auch die Funktion SUMMEWENN verwenden, um nur positive Werte in einer Spalte zu summieren. Der Code könnte so aussehen:

Range("C1").Value = WorksheetFunction.SumIf(Range("S:S"), ">0")

Diese Methode ist besonders nützlich, wenn du nur die positiven Werte summieren möchtest.


Praktische Beispiele

  1. Summe aller Werte in Spalte B:

    Range("C1").Value = WorksheetFunction.Sum(Range("B:B"))
  2. Summe der Werte in Spalte A bis zur letzten Zeile:

    Range("C1").Value = WorksheetFunction.Sum(Range("A2:A" & Range("A:A").SpecialCells(xlCellTypeLastCell).Row))
  3. Summe der Werte in Spalte D, die größer als 100 sind:

    Range("C1").Value = WorksheetFunction.SumIf(Range("D:D"), ">100")

Tipps für Profis

  • Nutze die SpecialCells-Methode, um nur nicht-leere Zellen zu summieren.
  • Wenn du die Formatierung der Zelle ändern möchtest, kannst du den Code wie folgt erweitern:
With Range("C1")
    .Interior.Color = vbYellow
    .Borders(xlEdgeTop).Weight = xlThick
    .Borders(xlEdgeBottom).Weight = xlThick
    .Borders(xlEdgeRight).Weight = xlThick
    .Borders(xlEdgeLeft).Weight = xlThick
End With
  • Speichere deine Arbeit häufig, um Datenverluste zu vermeiden.

FAQ: Häufige Fragen

1. Wie kann ich die Summe einer Spalte in Excel VBA berechnen, ohne den Bereich manuell anzugeben?
Du kannst die gesamte Spalte mit Range("A:A") ansprechen, um die Summe der Spalte zu berechnen.

2. Ist es möglich, nur die positiven Werte in einer Spalte zu summieren?
Ja, du kannst die Funktion SUMMEWENN verwenden, um nur die Werte zu summieren, die größer als 0 sind, wie im Beispiel gezeigt.

3. Wie kann ich die Summe einer Spalte in einer bestimmten Zelle anzeigen lassen?
Du kannst die Zelle, in der die Summe angezeigt werden soll, einfach im Code anpassen, z.B. Range("C1").Value.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige