Clever-Excel-Forum

Normale Version: VBA: Letzte nicht freie Zeile in R1C1-Formel
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

Wie muß folgender Code geändert werden, damit die Werte der Zellen D6 bis zur letzten nicht leeren Zelle der Spalte D (Zeile 63) addiert werden?

Code:
Dim lz As Integer
Dim efz As Integer

lz = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
efz=lz+1
Range("D" & efz).Select
    ActiveCell.FormulaR1C1 = "=SUMIF(R6C[-1]:R63C[-1],RC3,R6C:R63C)"
Ich kriege das einfach nicht auf die Reihe mit meinen mageren VBA-Kenntnissen

Einen schönen Abend
Alooha
etwas ist unklar. 

willst du nur die Summe der Werte aus dem Bereich in  D oder soll es auch wie im Beispiel mit Abhängikgeit des Wertes  aus Spalte C rechnen?

nur die reine Summe  wäre dies ActiveCell.FormulaR1C1 = "=SUM(R6C:R[-1]C)"

R6 = Row(Zeile)6
C = Column(Spalte) bleibt unverändert
R[-1] = Eine Zeilennummer unter der aktiven Zelle

die aktive Zelle wird vorher auf die letzte belegte Zeile +1 platziert. Somit wird die Range relativ von dort aus erzeugt.
Hallo,
da die Sache etwas kompliziert ist werde ich etwas später eine Beispieldatei posten.
Mir ist eingefallen dass, wenn ich unter den Bereich der addiert werden soll, die Summen setzen will, die letzte nicht leere Zeile dann ändert.
Es sollen mehrere Summen untereinander erstellt werden, für jedes Item das sich in Spalte C befindet, sollen die entsprechenden Werte in D addiert werden (SUMIF()).
Bis später
Alooha

Hier die Beispieldatei.
Es geht also darum, den Bereich B32 bis J40 per VBA unter die Tabelle zu setzen, wobei die Zeile 32 nicht fix ist, da die Tabelle eine variierende Länge hat, immer mit der Zeile 6 beginnend.
MfG
Alooha
Hallo,

habe die mal ein Beispiel mit der Standardfunktion Teilergebnis erstellt. Wenn das für dich in Frage kommt, kann ich dir das näher beschreiben, ist ganz einfach.
Hallo,
vielen Dank.
Leider geht das aber nicht so, da die Liste nach den Nummern in Spalte 1 sortiert wird. Die Teilergebnisse müssen schon unter der Tabelle stehen. Sorry
Ich denke, ich habe die Lösung gefunden, um die Formeln der Höhe der Tabelle anzupassen:
Code:
ActiveCell.FormulaR1C1 = "=SUMIF(R6C[-1]:R" & lz & "C[-1],RC3,R6C:R63C)"

wobei lz die letzte Zeile der Tabelle ist, in der ein Wert in Spalte B steht.

Wo ich jetzt aber hänge, das ist das Kopieren der Formel nach unten:
Code:
Selection.AutoFill Destination:=Range("D" & efz &":D" & efz+8)), Type:=xlFillDefault
wobei efz (efz=lz+1) die erste freie Zeile ist (64) und efz+8 folglich die Zeile 72.

Dieser Code soll die Instruktion
Code:
Selection.AutoFill Destination:=Range("D64:D72"), Type:=xlFillDefault
flexibel machen.

Was ist da nicht richtig in der Syntax?
Und die Antwort kann ich mir jetzt selbst geben: )) anstatt)
MfG

Alooha