Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1280to1284
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

Excel VBA Summe unter Liste

Excel VBA Summe unter Liste
09.10.2012 11:49:23
xltyp
Hallo!
Ich habe eine Liste von Werten in den Spalten A und B (A ist die Bezeichnung, B ein Preis).
Unter dem letzten Preis soll nun die Summe dieser angezeigt werden.
Da die Werte mittels einer Schleife von VBA eingetragen werden, kann ich die Formel nicht einfach so setzen und auch Cells(12,2) funktioniert nicht ohne weiteres.
Deshalb gehe ich momentan mit
Dim y, x As Integer
y = 5
x = 2
While Not Cells(y, x) = ""
y = y + 1
Wend
Alle Felder durch, bis das letzte (gefüllte) erreicht ist. Wie kann ich aber nun alle darüberliegenden über eine Formel addieren? Klar kann ich in einer Double-Variable alle Werte addieren, aber bei einer Änderung im Tabellenblatt wirkt sich das dann nicht aus. Sollte quasi in etwa so sein:
Cells(y,x) = "=SUMME()" - aber was trage ich in die Klammern ein? Ist ja immer unterschiedlich!
beste grüße,
xltyp

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel VBA Summe unter Liste
09.10.2012 11:55:39
Jack
hallo xltyp
ActiveCell.FormulaR1C1 = "=SUM(R[" & -y & "]C:R[-1]C)"
so glaube ich
(oder so ähnlich auf alle Fälle ) =)
Grüße

AW: Excel VBA Summe unter Liste
10.10.2012 09:32:10
xltyp
Herzlichen Dank - diese Lösung funktioniert auch :) . Und endlich habe ich raus, wie die Zellkoordination mit RxCx funktioniert ;)

AW: Excel VBA Summe unter Liste
10.10.2012 09:48:49
Jack
Dann ist doch super =)
Und wieder was dazu gelernt, und das ist die Hauptsache =)
Grüße

AW: Excel VBA Summe unter Liste
09.10.2012 12:47:45
Rudi
Hallo,
ohne Schleife!
Cells(5,2).end(xldown).offset(1).formular1c1="=Sum(R5C:R[-1]C)"
Gruß
Rudi
VBA gut?

AW: Excel VBA Summe unter Liste
09.10.2012 13:27:48
xltyp
Rudi,
herzlichen Dank für deine Antwort. Da habe ich mich mit der Einschätzung "Gut" wohl verklickt.
Gerne würde ich dein Code-Snippet (welches sehr gut funktioniert) verstehen.
Cells(5,2).end(xldown).offset(1).formular1c1="=Sum(R5C:R[-1]C)"
Cells(5,2) ist klar. Die Methode .end() soweit auch. Was aber beschreibt die Konstante xlDown?
Die Methode offset(1), formular1c1 verstehe ich ebenfalls nicht. Und wie ist die Angabe des Ranges R5C:... aufgebaut? Kenne nur A1:X3 als Beispiel.
Ich würde das gerne nachovollziehen - es reicht mir auch schon, wenn du mir ein Stichwort hinwirfst, welches ich dann Googlen kann - hatte aber keinen Anhaltspunkt, wie ich da vorgehen könnte :)
Viele Grüße,
xltyp

Anzeige
AW: Excel VBA Summe unter Liste
09.10.2012 13:34:18
Rudi
Hallo,
Was aber beschreibt die Konstante xlDown?
Die Richtung, was sonst? xlDown, xlUp, xlToRight, xlToLeft
Entspricht der Tastenkombi Strg+Pfeiltasten.
Offset()= Zellenversatz(Zeilen, Spalten)
FormulaR1C1= Formel als ZS-Bezug. Da englisch RC (Row, Column). Wirf mal den Recorder an und schreibe eine Formel in eine Zelle.
Gruß
Rudi

AW: Excel VBA Summe unter Liste
10.10.2012 09:31:11
xltyp
Ich bedanke mich sehr herzlich, Rudi. Mit passender Lektüre (Objektkatalog) konnte ich das ganze auch sehr gut nachvollziehen.
Wenn allerdings nur ein Feld (sagen wir, kein Datensatz sondern nur die Überschriften) vorhanden ist,
kommt eine exception.
Beispiel:
Name Vorname E-Mail
Der erste Datensatz soll erstellt werden unter "Name", also nutze ich:
Cells(1,1).end(xlDown).offset(1) = "Maintaire"
Cells(1,1).end(xlDown).offset(0,1) = "Rudi"
Cells(1,1).end(xlDown).offset(0,2) = "rudimaintaire@testdomain.de"
Zum einen: Ist es so sauber? Zum anderen: Warum kommt ein Fehler, wenn noch kein Datensatz vorhanden ist?
Viele Grüße,
xltyp

Anzeige
AW: Excel VBA Summe unter Liste
10.10.2012 09:40:12
Rudi
Hallo,
ganz einfach.
Cells(1,1).end(xlDown) 'springt' nach A1048576.
Cells(1,1).end(xlDown).OffSet(1) ist demnach A1048577. Diese Zelle gibt es nicht.
Besser hoch springen.
Cells(rows.count,1).end(xlup).offset(1)="Rudi"
Gruß
Rudi

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige