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

"dynamische "Summe in VBA

Forumthread: "dynamische "Summe in VBA

"dynamische "Summe in VBA
05.10.2002 11:27:43
Torsten
Hallo Excel-Freunde,

ich muss für eine Menge Zellen in der gleichen Spalte die Summe bilden.
Z.B. für die Zelle A10 muss die Summe A1:A9 sein, für B10 die Summe B1:B9 usw.

Ich muss das ganze in einer for-next-Schleife machen, weil die Anzahl der Spalte, bis zu der ich die Addition fortsetzen muss sich ab und zu ändert.

folgende Versuche schlugen fehl:
Cells(35, zählen).Value = Application.WorksheetFunction.Sum(range(cells(1, spalte).address), cells(9, spalte).address)) 'Hier addiert er dann nur die zwei Werte, nicht auch die Werte dazwischen.
Mit "Range" hat auch nix funktioniert.
In meiner Verzweiflung haben ich dann:" Cells(10, spalte).Value = Cells(10, spalte).Value + Cells(5, spalte).Value + ..." gemacht. Aber es muss doch auch einfacher gehen, oder?

Für eine Lösung wäre ich echt dankbar!!

Viele Grüße,

Torsten

Anzeige

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

Betreff
Datum
Anwender
Anzeige
Re: "dynamische "Summe in VBA
05.10.2002 11:45:56
jinx
Moin, Torsten,

der folgende Code liest die genutzten Spalten in der Zeile1 aus und trägt dann die Summenformel in die entsprechenden Spalten in Zeile 10 ein, bitte Code an andere Bedingungen anpassen:


Sub Torsten()
   Dim intLastColumn As Integer
   intLastColumn = Cells(1, Columns.Count).End(xlToLeft).Column
    For i = 1 To intLastColumn
        Cells(10, i).FormulaR1C1 = "=SUM(R[-8]C:R[-1]C)"
    Next
End Sub

 

     Code eingefügt mit Syntaxhighlighter 1.15

cu
jinx
Anzeige
Re: "dynamische "Summe in VBA
05.10.2002 11:49:33
Hajo_Zi
Hallo Torsten

Cells(35, Zählen).Value = Application.WorksheetFunction.Sum(Range(Cells(1, Spalte), Cells(9, Spalte)))


Gruß Hajo

Re: "dynamische "Summe in VBA
05.10.2002 12:08:12
Nele
Ich hab mich auch mal versucht, auch wenn die Lösung nicht so toll is wie von hajo und jinx, will ich doch auch mal was posten
:o)


Sub Addition()
Dim Spalte As Integer
Dim x As Integer

x = InputBox("Bis zu welcher Spalte wollen sie die Addition durchführen?")
Spalte = 1
For M = 1 To x
Tabelle1.Cells(10, Spalte).Value = Summe(Spalte)
Spalte = Spalte + 1
Next M
End Sub

Function Summe(Spalte As Integer)

Spalte1 = Spalte
Zeile1 = 1
With Worksheets(1)
For N = 1 To 9
Summe = .Cells(Zeile1, Spalte1).Value + Summe
Zeile1 = Zeile1 + 1
Next N
End With
End Function

Anzeige
Danke für eure Antworten
05.10.2002 14:07:49
Torsten
Mir tun schon die Augen weh, deshalb werde ich mich erst später mit euren Antworten befassen.

Aber eins kann ich schon mal sagen: Ihr seid alle toll!!

Re: "dynamische "Summe in VBA
05.10.2002 14:13:20
Torsten
Hallo Hajo,

danke für die Antwort, aber diese Lösung hatte ich auch schon. Aber es wird nicht von Zeile 1 bis Zeile 9 sondern nur die beiden Werte in Zeile 1 und Zeile 9 miteinander addiert.

Ich brauche aber die Range!

Anzeige
Re: "dynamische "Summe in VBA
05.10.2002 14:17:45
Hajo_Zi
Hallo Torsten

bei mir klappt das ohne Probleme.

Gruß Hajo

Re: "dynamische "Summe in VBA
05.10.2002 14:18:44
Torsten
gut, das bringt mir was.

ich habe den ersten Teil wie du gemacht (mit xltoleft) und For-Next.

Ich kam aber nicht drauf, die R1C1-Schreibweise zu benutzen, um die Range hinzubekommen, obwohl ich es hätte eigentlich wissen sollen!

Vielen Dank für deine Lösung!

Anzeige
Re: "dynamische "Summe in VBA
05.10.2002 14:20:35
Torsten
Hallo Nele,

vielen Dank für deine Mühe. Da alles automatisch gehen soll, darf ich nicht mit einer Inputbox arbeiten.

Die Lösung hat mir Halo zugeschickt.

Noch mal vielen Danke aber !!!!

Re: "dynamische "Summe in VBA
05.10.2002 14:22:12
Torsten
Es läuft zwar, aber es werden nur die beiden Werte "Cells(1, Spalte) und Cells(9, Spalte) miteinander addiert. Alles dazwischen leider nicht.

Ist mir aber egal, jetzt habe ich ja deine Lösung.

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

Dynamische Summe in VBA erstellen


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und gehe zum Visual Basic for Applications (VBA) Editor, indem du ALT + F11 drückst.

  2. Erstelle ein neues Modul: Klicke mit der rechten Maustaste auf "VBAProject (DeinArbeitsblattName)", wähle "Einfügen" und dann "Modul".

  3. Füge den folgenden Code ein, um die Summe einer dynamischen Range zu bilden:

    Sub DynamischeSumme()
       Dim intLastColumn As Integer
       intLastColumn = Cells(1, Columns.Count).End(xlToLeft).Column
    
       For i = 1 To intLastColumn
           Cells(10, i).FormulaR1C1 = "=SUM(R[-9]C:R[-1]C)"
       Next i
    End Sub

    Dieser Code summiert die Werte von Zeile 1 bis 9 für jede Spalte und gibt das Ergebnis in Zeile 10 aus.

  4. Führe das Makro aus: Klicke auf "Run" oder drücke F5, um das Makro auszuführen und die Summen zu berechnen.


Häufige Fehler und Lösungen

  • Problem: Das Makro addiert nur die Werte in Zeile 1 und Zeile 9.

    • Lösung: Stelle sicher, dass du die richtige Syntax für die Range verwendest. Der Code Cells(10, i).FormulaR1C1 = "=SUM(R[-9]C:R[-1]C)" ist korrekt, um die gesamte Range zu summieren.
  • Problem: Der Code funktioniert nicht in älteren Excel-Versionen.

    • Lösung: Stelle sicher, dass du eine Version von Excel verwendest, die VBA unterstützt. Der Code sollte in Excel 2010 und später funktionieren.

Alternative Methoden

Eine andere Methode, um die Summe zu bilden, ist die Verwendung der Application.WorksheetFunction.Sum-Methode. Hier ist ein Beispiel:

Sub AlternativeSumme()
    Dim i As Integer
    For i = 1 To 10
        Cells(10, i).Value = Application.WorksheetFunction.Sum(Range(Cells(1, i), Cells(9, i)))
    Next i
End Sub

Diese Methode verwendet die WorksheetFunction.Sum, um die Summe über die angegebenen Zellen zu berechnen.


Praktische Beispiele

Hier sind einige praktische Beispiele, um die dynamische Summe in verschiedenen Szenarien zu verwenden:

  1. Summe einer bestimmten Spalte: Wenn du nur eine bestimmte Spalte summieren möchtest, kannst du den Code anpassen:

    Sub SummeEineSpalte()
       Cells(10, 1).Value = Application.WorksheetFunction.Sum(Range(Cells(1, 1), Cells(9, 1)))
    End Sub
  2. Summe über mehrere Blätter: Du kannst auch die Summe über mehrere Blätter bilden, indem du den Blattnamen angibst:

    Sub SummeMehrereBlaetter()
       Cells(10, 1).Value = Application.WorksheetFunction.Sum(Sheets("Blatt1").Range("A1:A9")) + _
                             Application.WorksheetFunction.Sum(Sheets("Blatt2").Range("A1:A9"))
    End Sub

Tipps für Profis

  • Verwende Option Explicit: Füge am Anfang deines Moduls Option Explicit hinzu, um sicherzustellen, dass alle Variablen deklariert werden. Das hilft, Fehler zu vermeiden.
  • Vermeide Hardcoding: Verwende Variablen für Zeilen und Spalten, um deinen Code flexibler zu gestalten.
  • Optimierung: Wenn du mit großen Datenmengen arbeitest, kann es hilfreich sein, Application.ScreenUpdating = False am Anfang deines Codes und Application.ScreenUpdating = True am Ende zu verwenden, um die Ausführungszeit zu verkürzen.

FAQ: Häufige Fragen

1. Kann ich die Summe in einer anderen Zelle anzeigen? Ja, du kannst die Zielzelle einfach im Code anpassen, indem du Cells(x, y) änderst, wo x die Zeile und y die Spalte ist.

2. Wie viele Spalten kann ich mit diesem Skript verarbeiten? Das Skript kann so viele Spalten verarbeiten, wie in der ersten Zeile Daten vorhanden sind. Das Maximum hängt von der Excel-Version ab (bis zu 16.384 Spalten in Excel 2010 und später).

3. Ist dieser Code in Excel für Mac anwendbar? Ja, die meisten VBA-Codes sind plattformübergreifend, aber einige Funktionen oder Shortcuts können variieren.

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