VBA: Formel einfügen
Mahlzeit!
Ich möchte gerne per VBA in der ersten freien Spalte Formeln einfügen.
Zunächst ermittle ich die erste freie Spalte wie folgt:
Dim LCol As Integer
Set Rng = ActiveCell.CurrentRegion
Debug.Print Rng.Address
LCol = Rng.Columns(Rng.Columns.Count).Column
Nunmehr sollen in dieser Spalte die vorherigen Werte saldiert werden.
ActiveSheet.Cells(2, LCol) = "=Cells(2 - 1, LCol-1) + Cells(2, LCol-1)"
Dim Wiederholungen As Integer
For Wiederholungen = 3 To 10
ActiveSheet.Cells(Wiederholungen, LCol) = "=Cells(Wiederholungen - 1, LCol-1) + Cells(Wiederholungen, LCol-1)"
Next
Leider funktioniert dieser Code nicht.
Wo ist mein Denkfehler?
vereinfachtes Beispiel:
a1: 20
a2: 30
a3: 50
In B2 soll die Formel =A1+a2 (--> B2: 50) bzw.
in b3 die Formel =A3+b2 (--> B3: 100)
usw. stehen.
Vielen Dank für die Unterstützung!
Tom
Antwort schreiben
Antwort 1 von Saarbauer vom 21.01.2022, 12:44 OptionsLösung
Hallo,
Versuch es mal so
ActiveSheet.Cells(2, LCol) ="=R[-1]C[-1]+RC[-1]"
For Wiederholungen = 3 To 10
ActiveSheet.Cells(Wiederholungen, LCol) = "=R[-1]C+RC[-1]"
Next
Gruß
Helmut
Antwort 2 von Tomschi vom 21.01.2022, 12:52 Options
Hallo Helmut!
Klappt. DANKE!
Das mit "=R[-1]C[-1]+RC[-1]" habe ich um ehrlich zu sein bis dato noch nicht durchschaut.
Daher wollte ich den Umweg via "Cells" gehen.
Was genau bedeutet z. B. R[-1]C[-1] und gibt es dafuer eine Logik um den "normalen" Zellbezug zu ermitteln?
Ciao
Tom
Antwort 3 von Beverly vom 21.01.2022, 13:13 Options
Hi Tom,
es geht auch mit Cells:
ActiveSheet.Cells(Wiederholungen, LCol) = "=" & Cells(Wiederholungen - 1, LCol).Address(False, False) & "+" & Cells(Wiederholungen, LCol - 1).Address(False, False)
Bis später,
Karin
PS: die schließende Klammer hinter False wird von der Forensoftware abgeschnitten.
Antwort 4 von Saarbauer vom 21.01.2022, 13:18 Options
Hallo,
R für Row -> Zeile
C für Columns -> Spalte
R[-1]C[-1] -> 1Zeile hoch, 1 Spalte zurück
Hoffe die Erläuterung reicht
Gruß
Helmut
Antwort 5 von Tomschi vom 21.01.2022, 13:40 Options
Hi Karin!
Hallo Helmut!
Bitte nicht streiten wegen der Bonuspunkte.
Ihr habt mir sehr weitergeholen!
Bye
Tom