Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Funktionsweise FormulaR1C1

Forumthread: Funktionsweise FormulaR1C1

Funktionsweise FormulaR1C1
08.01.2018 13:23:03
Mia
Hy Leute!
Ich habe jetzt versucht selbst darauf zu kommen aber irgendwie schaffe ich es dann doch nicht. Kann mir jemand das Konstrukt von FormulaR1C1 erklären anhand meiner Beispiele?
Ich habe ein Arbeitsblatt "Result" und damit Formeln nicht nachgezogen werden müssen will ich die Formeln mittels VBA einfügen. Die Daten werden mittels einer Userform eingetragen.
Hier mein Versuch:
Sheets("Result").Range("L" & CStr(FinalRow)).FormulaR1C1 = "=sum(R[6]C:R[10]C)"
Macht aber gar nicht was ich will. Konkret möchte ich, dass in besagter Zelle L die Summe von S:W dieser Zeile eingetragen wird.
Aber wie gesagt ich habe die Arbeitsweise dieser Funktion noch nicht verstanden, daher rechnet er mir jetzt
=SUMME(L1104:L1108)
Dieses Formula Funktion brauche ich noch für weitere Spalten vlt kann man mir hier auch einen Denkanstoß geben.
=WENN(B789="";"";KALENDERWOCHE(B789))
=WENN(B789="";"";MONAT(B789))
=WENN(A789="";"";JAHR(A789))
=TEIL(AJ789;1;2)

Vielen lieben Dank schon im Voraus!
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Funktionsweise FormulaR1C1
08.01.2018 13:33:40
Daniel
Hi
R1C1 ist im Prinzip so aufgebaut:
nach R kommt die Zeilennummer
nach C kommt die Spaltennummer
steht die Nummer in Klammern [1], so ist das ein relativer Zellbezug (Versatzwert)
steht die Nummer ohne Klammer, so ist es ein absoluter Zellbezug auf die jeweilige Zeile/Spalte
fehlt die Nummer, so geht der Bezug auf die ganze Zeile bzw Spalte.
du kannst die Formel aber auch einfach so ermitteln, indem du sie von Hand in die Zelle schreibst und dir dann im Direktfenster die Formel in R1C1-Schlreibweise anzeigen lässt.
Dazu einfach ?Selection.FormulaR1C1 im Direktfenster eingeben und ENTER drücken.
Den angezeigten Text kannst du dann in den Code übernehmen (Anführungszeichen doppeln nicht vergessen!)
Gruß Daniel
Anzeige
korrektur
08.01.2018 13:42:20
Daniel
Hi
sorry, kleine Korrektur:
fehlt die Nummer, so geht der Bezug auf die gleiche Zeile oder Spalte, in der auch die Formel steht, dh eine fehlende Nummer entspricht einem [0]
prinzipiell sollte man bei R1C1 versuchen, die Zellbezüge wann immer möglich als absolut darzustellen und nur wenn notwendig als relativ.
in deinem Fall also:
.FormulaR1C1 = "=SUM(RC19:RC23)"
Gruß Daniel
Anzeige
AW: Funktionsweise FormulaR1C1
08.01.2018 13:59:02
EtoPHG
Hallo Mia,
Deine Addresierung in VBA lassen einem die Haare zu Berge stehen ;-
Sheets("Result").Cells(FinalRow,12).FormulaR1C1 = "=SUM(RC[7]:RC[11])"

Heisst: in Spalte L (12), wird die Formel Summe von Spalte S (12+7) bis W (12+11) geschrieben.
RC heisst also dass die Zahlen in Klammern jeweils relativ zur Zelle in der die Formel steht. Da R hier keine Zahl enthält, wird die gleiche Zeile (Row) genommen, die Spalte aber wird relativ zur Spalte 12 mit 7, bzw. 11 aufaddiert.
Du könntest auch schreiben:
Sheets("Result").Cells(FinalRow,12).FormulaR1C1 = "=SUM(RC19:RC23)"
Damit wird die Spalte absolut angeben, statt relativ zur Zelle mit der Formel. Oder:
Sheets("Result").Cells(FinalRow,12).FormulaR1C1 = "=SUM(R[1]C19:R[1]C23)"
Damit würde die Spalte 19:23 für die Zeile FinalRow+1 summiert.
Alles klar ?
Gruess Hansueli
Anzeige
AW: Funktionsweise FormulaR1C1
08.01.2018 15:18:06
Mia
Vielen Dank! Konnte so alle Formeln eintragen :-)
Wieso lässt meine Adressierung einem die Haare zu Berge stehen? Was mache ich denn falsch bzw. was könnte ich verbessern?
Adressierung, nicht falsch, aber ineffizient...
09.01.2018 07:57:48
EtoPHG
Hallo Mia,
Weil bei

.Range("L" & CStr(FinalRow))

statt

.Cells(FinalRow, 12)

der VBA-Interpreter folgende zusätzliche Schritte machen muss:
1. Umwandlung einer Zahl in einen String:CStr(FinalRow)
2. Zusammensetzen 2 Strings: "L" & 1.
3. Zurückübersetzen eines Strings in eine Zeile, Spalten-Adresse (Zahlen): 2.
Das mag bei einer einzelner Codeausführung vernachlässigbar sein, bei x-Tausendmaliger aber nicht.
Gruess Hansueli
Anzeige
AW: Adressierung, nicht falsch, aber ineffizient...
09.01.2018 14:25:26
Mia
Vielen Dank für die Aufklärung!
Klingt absolut logisch und werde ich für die Zukunft verinnerlichen :-)
;
Anzeige

Infobox / Tutorial

Funktionsweise von FormulaR1C1 in Excel VBA


Schritt-für-Schritt-Anleitung

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject (deine Datei)", wähle Einfügen > Modul.

  3. Schreibe den Code: Füge den folgenden Code ein, um eine Formel in Zelle L von "Result" einzufügen:

    Sheets("Result").Cells(FinalRow, 12).FormulaR1C1 = "=SUM(RC[7]:RC[11])"
  4. Ersetze FinalRow: Stelle sicher, dass FinalRow die letzte Zeile ist, die Du verwenden möchtest.

  5. Führe den Code aus: Drücke F5, um den Code auszuführen und die Formel einzufügen.


Häufige Fehler und Lösungen

  • Fehlerhafte Zellbezüge: Wenn Du die Formel nicht korrekt einfügst, kann es zu falschen Zellbezügen kommen. Achte darauf, dass Du die richtige Syntax verwendest, z.B. =SUM(R[6]C:R[10]C) ist relativ, während =SUM(RC19:RC23) absolut ist.

  • Formel gibt unerwartete Ergebnisse zurück: Überprüfe, ob Du absolute und relative Zellbezüge korrekt verwendest. Eine fehlende Zahl in R oder C entspricht einem Bezug auf die aktuelle Zeile oder Spalte.

  • Fehler bei der Adressierung: Wenn Du .Range("L" & CStr(FinalRow)) verwendest, kann dies ineffizient sein. Nutze stattdessen .Cells(FinalRow, 12), um die Leistung zu verbessern.


Alternative Methoden

  1. Direktes Einfügen durch Excel: Du kannst die Formel auch manuell in eine Zelle eingeben und dann mit ?Selection.FormulaR1C1 im Direktfenster die R1C1-Formel anzeigen lassen.
  2. Formeln in Arrays: Wenn Du eine Vielzahl von Formeln einfügen möchtest, kannst Du auch ein Array verwenden, um mehrere Werte gleichzeitig zu setzen.

    Dim formulas(1 To 5) As String
    formulas(1) = "=SUM(RC[7]:RC[11])"
    ' Füge weitere Formeln hinzu
    Sheets("Result").Cells(FinalRow, 12).Resize(5, 1).FormulaR1C1 = Application.Transpose(formulas)

Praktische Beispiele

  • Summe von Spalten S bis W:

    Sheets("Result").Cells(FinalRow, 12).FormulaR1C1 = "=SUM(RC[7]:RC[11])"
  • Wochennummer und Monat:

    Sheets("Result").Cells(FinalRow, 13).FormulaR1C1 = "=WENN(B789="""";"""";KALENDERWOCHE(B789))"
    Sheets("Result").Cells(FinalRow, 14).FormulaR1C1 = "=WENN(B789="""";"""";MONAT(B789))"

Tipps für Profis

  • Verwende immer absolute Bezüge: Wo es möglich ist, benutze absolute Zellbezüge (z.B. RC19:RC23), um Fehler zu vermeiden.

  • Vermeide unnötige Umwandlungen: Reduziere die Anzahl an Umwandlungen zwischen String und Zahl, um die Effizienz Deines Codes zu erhöhen.

  • Nutze .FormulaR1C1 für dynamische Formeln: Bei sich ändernden Daten ist FormulaR1C1 ideal, um stets die korrekten Zellbezüge zu haben.


FAQ: Häufige Fragen

1. Was ist der Unterschied zwischen R1C1 und A1 in Excel?
R1C1 verwendet relative Zellbezüge, während A1 absolute Zellbezüge nutzt. In R1C1 gibt es keine Buchstaben für Spalten, nur Zahlen.

2. Wie kann ich eine Formel in VBA mit mehreren Bezügen erstellen?
Du kannst eine Formel mit mehreren Bezügen erstellen, indem Du die Syntax =SUM(RC[1]:RC[5]) verwendest, um die gewünschten Zellen zusammenzufassen.

3. Warum bekomme ich einen Fehler, wenn ich CStr(FinalRow) verwende?
Das liegt daran, dass CStr eine Umwandlung in einen String vornimmt. Verwende stattdessen .Cells(FinalRow, Spalte), um direkt auf die Zelle zuzugreifen, was effizienter ist.

4. Was mache ich, wenn meine Formel nicht das gewünschte Ergebnis liefert?
Überprüfe deine Zellbezüge in der Formel und stelle sicher, dass Du die richtige Syntax verwendet hast. Teste die Formel auch direkt in Excel, um sicherzustellen, dass sie korrekt ist.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige