Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

VBA: Summe über eine gesamte Spalte

526 views
Skip to first unread message

Wolfgang Armbruster

unread,
Sep 5, 2008, 5:50:50 AM9/5/08
to
Guten Tag allerseits, ich bräuchte einen Tipp in Sachen VBA.
Ich möchte eine Tabelle in Excel 2007 mit einem Makro bearbeiten. Dabei
soll in einer bestimmten Spalte der Cursor zunächst ans Ende der Tabelle
bewegt werden. In der nächstunteren Zelle soll danach eine Summenformel
eingefügt werden, die die Werte der darüberliegenden Zellen aufsummiert.

Wenn es in der Tabelle stets dieselbe Anzahl Zeilen geben würde, wäre das
easy. Wie aber, wenn die Anzahl der Zeilen eben von Mal zu Mal wechselt?

Danke schon mal.
--
Wolfgang Armbruster

Melanie Breden

unread,
Sep 5, 2008, 6:10:12 AM9/5/08
to
Hallo Wolfgang,

"Wolfgang Armbruster" schrieb:

> Ich möchte eine Tabelle in Excel 2007 mit einem Makro bearbeiten. Dabei
> soll in einer bestimmten Spalte der Cursor zunächst ans Ende der Tabelle
> bewegt werden. In der nächstunteren Zelle soll danach eine Summenformel
> eingefügt werden, die die Werte der darüberliegenden Zellen aufsummiert.

versuchs mal so:

Dim lngLastRow As Long

lngLastRow = Range("A1").End(xlDown).Row
Cells(lngLastRow + 1, "A").Formula = "=Sum(A1:A" & lngLastRow & ")"


Mit freundlichen Grüssen
Melanie Breden

--
- Microsoft MVP für Excel -

Wolfgang Armbruster

unread,
Sep 5, 2008, 6:18:45 AM9/5/08
to
Am Fri, 5 Sep 2008 12:10:12 +0200 schrieb Melanie Breden:

> Hallo Wolfgang,
>
> "Wolfgang Armbruster" schrieb:
>
>> Ich möchte eine Tabelle in Excel 2007 mit einem Makro bearbeiten. Dabei
>> soll in einer bestimmten Spalte der Cursor zunächst ans Ende der Tabelle
>> bewegt werden. In der nächstunteren Zelle soll danach eine Summenformel
>> eingefügt werden, die die Werte der darüberliegenden Zellen aufsummiert.
>
> versuchs mal so:
>

werde ich tun. Vielen Dank!
--
Wolfgang Armbruster

thomas...@gmail.com

unread,
Sep 5, 2008, 6:51:33 AM9/5/08
to
Grüezi Wolfgang

On 5 Sep., 11:50, Wolfgang Armbruster <40tude-e.
20.wolff...@spamgourmet.com> wrote:

> Ich möchte eine Tabelle in Excel 2007 mit einem Makro bearbeiten. Dabei
> soll in einer bestimmten Spalte der Cursor zunächst ans Ende der Tabelle
> bewegt werden. In der nächstunteren Zelle soll danach eine Summenformel
> eingefügt werden, die die Werte der darüberliegenden Zellen aufsummiert.
>
> Wenn es in der Tabelle stets dieselbe Anzahl Zeilen geben würde, wäre das
> easy. Wie aber, wenn die Anzahl der Zeilen eben von Mal zu Mal wechselt?

Die folgenden zeilen gehen davon aus, dass der Cursor in der
betreffenden Spalte stetht und diese nicht leer ist:

Sub AutoSumme()
Dim lngCol As Long
Dim lngRow As Long

lngCol = ActiveCell.Column
lngRow = Cells(Rows.Count, ActiveCell.Column).End(xlUp).Row
Cells(lngRow + 1, lngCol).FormulaR1C1 = "=SUM(R[-" & lngRow &
"]C:R[-1]C)"
End Sub


--
Mit freundlichen Grüssen

Thomas Ramel
- MVP für MS-Excel -

Peter Schleif

unread,
Sep 5, 2008, 6:55:06 AM9/5/08
to
Wolfgang Armbruster schrieb am 05.09.2008 11:50 Uhr:
>
> Ich möchte eine Tabelle in Excel 2007 mit einem Makro bearbeiten. Dabei
> soll in einer bestimmten Spalte der Cursor zunächst ans Ende der Tabelle
> bewegt werden. In der nächstunteren Zelle soll danach eine Summenformel
> eingefügt werden, die die Werte der darüberliegenden Zellen aufsummiert.

Der folgende Code funktioniert auch, wenn die Spalte eine/mehrere
leere Zellen enthält. Außerdem wird auch der Cursor bewegt. Das "A"
musst Du natürlich überall (2x) durch Deine Spalte ersetzen.

Sub bewegen_und_summieren()
Cells(Rows.Count, "A").End(xlUp).Select
Selection(2).Formula = "=SUM(A1:" & Selection.Address(0,0) & ")"
End Sub

Peter

Bernd P

unread,
Sep 6, 2008, 5:38:48 AM9/6/08
to
Hallo,

Wenn Deine Tabelle flexibel sein soll, könntest Du die Spaltensummen
vielleicht besser in einer Titelzeile zeigen:

In A1:
=SUMME(A2:A65536)

Das von Dir formulierte Problem würde ich lieber nicht lösen, sondern
gern vermeiden.
Denn eine Makrolösung sollte, wenn ich die Aufgabenstellung richtig
verstanden habe, bei einem Mehrfachlauf auch erkennen, ob am
Spaltenende bereits eine Summenformel existiert, und in diesem Fall
keine weitere erzeugen.

Viele Grüße,
Bernd

Peter Schleif

unread,
Sep 6, 2008, 7:26:10 AM9/6/08
to
Bernd P schrieb am 06.09.2008 11:38 Uhr:
>
> Denn eine Makrolösung sollte, wenn ich die Aufgabenstellung richtig
> verstanden habe, bei einem Mehrfachlauf auch erkennen, ob am
> Spaltenende bereits eine Summenformel existiert, und in diesem Fall
> keine weitere erzeugen.

Das stimmt.

Zumindest sollte man vorher prüfen, ob sich schon eine Summe am Ende
befindet:

Cells(Rows.Count, "A").End(xlUp).Select
If Left(Selection.Formula,5)="=SUM(" Then Selection(0).Select
Selection(2).Formula="=SUM(A1:" & Selection.Address(0,0) & ")"

Peter

Bernd P

unread,
Sep 7, 2008, 5:41:13 AM9/7/08
to
Hallo Peter,

> Zumindest sollte man vorher prüfen, ob sich schon eine Summe am Ende
> befindet:
>
>    Cells(Rows.Count, "A").End(xlUp).Select
>    If Left(Selection.Formula,5)="=SUM(" Then Selection(0).Select
>    Selection(2).Formula="=SUM(A1:" & Selection.Address(0,0) & ")"

Es tut mir leid, aber dies erscheint mir alles als Stückwerk.
Was, wenn die Spalte eine Summenspalte von Daten aus anderen
Tabellenblättern ist?
Natürlich könnte man versuchen zu ermitteln, ob genau die richtige
Summenformel bereits in der letzten Zeile vorhanden ist, aber dann
gibt der Anwender ein zusätzliches Leerzeichen zwischen "=" und
"SUMME" ein und das Makro läuft erneut ins Leere...
Angenommen man näme sich auch dieser Sache an und vergleicht die
Formel nach Eliminierung von Leerzeichen, aber nun vergisst der
Anwender einfach, das Makro laufen zu lassen...
Die Tabelle kann mit der gegebenen Konstruktion eben nicht (jedenfalls
nicht ohne erheblichen Aufwand) sicherstellen, dass die Summenformel
jederzeit am Ende der Spalte steht.

IMHO tut man sich manche Dinge gar nicht erst an.

Viele Grüße,
Bernd

0 new messages