Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: FormulaR1C1 Aufbau und Funktionsweise

FormulaR1C1 Aufbau und Funktionsweise
10.05.2016 09:40:40
Nicolai
Guten Tag Excel-Forum,
durch den Betreff erkennbar habe ich Fragen zu FormulaR1C1.
Ziel soll sein, von einem bestehenden Auftrag eine produzierte (Teil-)Menge abzuziehen und diese dann mit Bestellnummer und Lieferdatum auf ein neues Blatt zu kopieren.
Die drei Informationen befinden sich in einer 2x2 Matrix geordnet nach den zu liefernden Kalenderwochen. Hierbei befindet sich die Mengeninformation in der ersten Spalte.
Bei Beenden einer Produktion möchte ich in die erste Zelle der folgenden Spalte die produzierte Menge eintragen und den zugehörigen Auftrag auswählen. In der darunterliegenden Zelle soll nun die Formel "=Summe(Zu Beginn ausgewählte Zelle : Zelle der ersten Zeile (in Bezug auf die Zelle in welche die Formel eingetragen wird)" eingetragen werden.
Z.B. =Summe(A3:B1) oder =Summe(A5:B1) etc.
So ist das Makro flexibel und kann jeweils auf verschiedene KW und Aufträge derselben KW angewendet werden.
Mein Code beginnt mit diesen Zeilen:
Dim selr As Integer
Dim selc As Integer
selr = ActiveCell.Row
selc = ActiveCell.Column
Cells(2, selc + 1).Select
ActiveCell.FormulaR1C1 = "=SUM(R[" + Format(selr - 2) + "]C[-1]:R[-1]C)"
Dies liefert mir diese Formel:
=SUMME(S1:T3)
Wobei mir dieser Code:
ActiveCell.FormulaR1C1 = "=SUM(R[" + Format(selr - 2) + "]C[1]:R[-1]C)"
diese Formel liefert:
=SUMME(T1:U3)
Warum ergibt sich diese gravierende Änderung an beiden Termen, obwohl ich nur einen verändere?
Wie muss ich die Variable selr einbinden?
Beste Grüße
Nicolai

Anzeige

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: FormulaR1C1 Aufbau und Funktionsweise
10.05.2016 10:22:29
Rudi
Hallo,
1. werden Strings mit & verkettet und nicht mit +.
2. das Format() ist überflüssig.
ActiveCell.FormulaR1C1 = "=SUM(R[" & selr - 2 & "]C[-1]:R[-1]C)"
3. die Angaben in [] sind relative Angaben zur aktuellen Position.
Select ist in VBA nur äußerst selten erforderlich.
Cells(2, selc + 1).FormulaR1C1 = "=SUM(R[" & selr - 2 & "]C[-1]:R[-1]C)"
Gruß
Rudi

Anzeige
AW: FormulaR1C1 Aufbau und Funktionsweise
10.05.2016 10:51:06
Nicolai
Hallo Rudi,
vielen Dank für deine Antwort. Ich habe meinen Code dementsprechend angepasst.
In der Theorie ist mir klar wie Excel arbeitet:
R[1] = Zelle unterhalb C[1] = Zelle rechts
R[-1] = Zelle oberhalb C[-1] = Zelle links
Nur warum wird das nicht praktisch umgesetzt?
Wähle ich A3 zu Beginn aus ist die Variable selr = 3.
3-2 ergibt 1, somit erhalte ich R[1]C[-1] Dies sollte mir doch die Zelle A3 liefern?
Ich erhalte A1.
Wie läuft die Auswertung der Werte innerhalb [] ab?
Und warum verändern sich beide Terme, wenn ich die 1 in eine -1 verändere?
Bester Gruß
Nicolai

Anzeige
AW: FormulaR1C1 Aufbau und Funktionsweise
10.05.2016 11:10:51
Nicolai
Nochmal eine Anmerkung.
Warum liefert
Cells(2, selc + 1).FormulaR1C1 = "=SUM(R[" & selr - 2 & "]C[-1]:R[-1]C)"
und
Cells(2, selc + 1).FormulaR1C1 = "=SUM(R[-1]C[-1]:R[" & selr - 2 & "]C)"
dasselbe Ergebnis =SUMME(A1:B3).

AW: FormulaR1C1 Aufbau und Funktionsweise
10.05.2016 11:22:40
Rudi
Hallo,
weil das von Excel automatisch gedreht wird.
Schreib mal =Summe(B3:A1) in eine Zelle.
Gruß
Rudi

Anzeige
AW: FormulaR1C1 Aufbau und Funktionsweise
10.05.2016 11:15:02
Rudi
Hallo,
somit erhalte ich R[1]C[-1] Dies sollte mir doch die Zelle A3 liefern?
nein. einen Fehler. von A gesehen ist C[-1] ungültig, da es links von A keine Zellen gibt.
Und warum verändern sich beide Terme, wenn ich die 1 in eine -1 verändere?
weil rechts was anderes als links ist.
Wenn T aktiv ist, ergibt C[1] U und C[-1] S.
Gruß
Rudi

Anzeige
AW: FormulaR1C1 Aufbau und Funktionsweise
10.05.2016 11:23:17
Nicolai
Aber der Bezug liegt doch, beim Eintragen der Formel, auf der Zelle B2.
Ist das korrekt oder merkt sich Excel meine Ausgangszelle?
Vielen Dank für deine bisherige Hilfe (~:

AW: FormulaR1C1 Aufbau und Funktionsweise
10.05.2016 11:46:07
Rudi
Hallo,
aktive Zelle: A3
somit ist
selc=1
selr=3
Cells(2, selc + 1) entspricht B2
somit
R[" & selr - 2 & "]C[-1] = R[1]C[-1] = A3
R[-1]C = B1
wird zu =Summe(A3:B1) und ergibt in B2 einen Zirkelbezug.

Anzeige
AW: FormulaR1C1 Aufbau und Funktionsweise
10.05.2016 12:32:26
Nicolai
Ahh. Ich möchte natürlich nur die Summe aus zwei Werten. :-)
Wie wird die Formel =Summe(A3;B1) geschrieben?
Beste Grüße
Nicolai

, statt : warum 'natürlich'? owT
10.05.2016 12:50:12
Rudi

AW: , statt : warum 'natürlich'? owT
10.05.2016 14:14:47
Nicolai
Super. Vielen Dank.
Jetzt verstehe ich auch was mein Problem war.
Durch den Doppelpunkt habe ich einen Bereich vorgegeben und damit gab es keine Änderung durch vertauschen der Terme. A3:B1 wird damit als A1:B3 ausgegeben. Was nicht zu meinem Ziel führte.
Durch ersetzen des : durch , läuft nun alles reibungslos.
Beste Grüße
Nicolai

Anzeige
AW: , statt : warum 'natürlich'? owT
11.05.2016 10:16:46
Herbert
Hi Rudi,
wow, Du bist ja nicht nur ein spitzen Excel-Profi, Du bist auch noch ein spitzen Excel-Dozent! Klasse, Deine Erklärungen!
Have a nice day!
Servus
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

FormulaR1C1 in Excel richtig anwenden


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und aktiviere die Entwicklertools: Gehe zu „Datei“ > „Optionen“ > „Menüband anpassen“ und aktiviere das Kontrollkästchen für „Entwicklertools“.

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

  3. Füge ein neues Modul hinzu: Rechtsklicke im Projektfenster auf „VBAProject (DeineDatei.xlsx)“, wähle „Einfügen“ und dann „Modul“.

  4. Schreibe den Code: Gebe den folgenden VBA-Code ein, um die Funktionalität von ActiveCell.FormulaR1C1 zu nutzen:

    Sub BeispielFormulaR1C1()
       Dim selr As Integer
       Dim selc As Integer
       selr = ActiveCell.Row
       selc = ActiveCell.Column
       ActiveCell.FormulaR1C1 = "=SUM(R[" & selr - 2 & "]C[-1]:R[-1]C)"
    End Sub
  5. Führe das Makro aus: Setze den Cursor auf die Zelle, in der Du die Formel einfügen möchtest, und drücke F5 oder wähle „Ausführen“ im Menü.

  6. Überprüfe das Ergebnis: Die Formel sollte jetzt in der aktiven Zelle sichtbar sein.


Häufige Fehler und Lösungen

  • Fehler bei der Verkettung: Stelle sicher, dass Du & zum Verketten von Strings verwendest, nicht +.

  • Falsche Zellreferenzen: Achte darauf, dass Du die richtigen relativen Referenzen verwendest. Zum Beispiel sollte R[-1]C[-1] auf die Zelle direkt links und eine Zeile darüber verweisen.

  • Zirkelbezug: Vermeide es, eine Formel zu erstellen, die auf die Zelle verweist, in der die Formel steht. Das führt zu einem Zirkelbezug.


Alternative Methoden

  1. Verwendung von Formula: Wenn Du die klassische A1-Notation bevorzugst, kannst Du ActiveCell.Formula verwenden:

    ActiveCell.Formula = "=SUM(A3:B1)"
  2. Direkte Zellreferenzierung: Statt die Formel dynamisch zu erstellen, kannst Du die benötigten Zellreferenzen direkt eingeben.


Praktische Beispiele

  • Summe zweier Werte: Um die Summe aus zwei Werten in der Formel R1C1-Notation zu berechnen:

    ActiveCell.FormulaR1C1 = "=SUM(RC[-1], R[-1]C[-1])"
  • Berechnung einer flexiblen Summe: Wenn Du eine flexible Formel erstellen möchtest, die sich an die aktuelle Position anpasst:

    ActiveCell.FormulaR1C1 = "=SUM(R[" & selr - 1 & "]C[-1]:R[" & selr - 3 & "]C)"

Tipps für Profis

  • Verwende die .Formula2R1C1-Eigenschaft: Diese ermöglicht es Dir, Formeln in einer anderen Notation zu schreiben.

  • Nutze ActiveCell.FormulaR1C1 = "": Mit dieser Methode kannst Du eine Zelle schnell leeren, bevor Du eine neue Formel einfügst.

  • Sei vorsichtig mit Select: In den meisten Fällen ist es nicht notwendig, eine Zelle auszuwählen, bevor Du eine Formel einfügst. Du kannst direkt auf die Zelle zugreifen.


FAQ: Häufige Fragen

1. Was ist der Unterschied zwischen FormulaR1C1 und Formula?
FormulaR1C1 verwendet die R1C1-Notation, während Formula die A1-Notation nutzt. Beide können jedoch Formeln in Excel erstellen.

2. Warum funktioniert mein VBA-Code nicht?
Überprüfe, ob Du die richtigen Zellreferenzen verwendest und ob es einen Zirkelbezug gibt. Achte auch darauf, dass das Makro korrekt in einem Modul gespeichert ist.

3. Wie kann ich eine Formel dynamisch anpassen?
Verwende Variablen wie selr und selc, um die aktuelle Position der aktiven Zelle zu ermitteln und diese in Deine Formel einzufügen.

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