Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1600to1604
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

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!

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
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 :-)

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige
Archiv - Verwandte Themen