Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

VBA: Letzte nicht freie Zeile in R1C1-Formel
#1
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
Antworten Top
#2
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.
Antworten Top
#3
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


Angehängte Dateien
.xlsm   Variablen Bereich addieren.xlsm (Größe: 58,65 KB / Downloads: 2)
Antworten Top
#4
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.


Angehängte Dateien
.xlsm   Variablen Bereich addieren.xlsm (Größe: 58,67 KB / Downloads: 3)
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Antworten Top
#5
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
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste