Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA - Formel in R1C1 übersetzen

VBA - Formel in R1C1 übersetzen
22.12.2021 22:29:39
Andreas
Hallo und guten Abend,
wie übersetze ich die Formel aus der Zelle:
=WENN(W2"";W2;"")&WENN(AC2"";ZEICHEN(10)&"Bündel: "&(AC2*100)&"%";"")&WENN(AI2"";ZEICHEN(10) &"indiv.: "&(AI2*100)&"%";"")
in einen VBA Code ? Wahrscheinlich mit R1C1 da die Formel fortlaufend in die Zellen geschrieben werden soll. Wie gehe ich vor?
Kann man das "übersetzen?" mit dem Ausgabefenster in VBA? wie genau geht das ?
oder kann man das einfach mit einem Befehl zu Formula.Local "ergänzen" um zu "Übersetzten" ?
Wäre bei Antwort dankbar
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA - Formel in R1C1 übersetzen
22.12.2021 23:06:24
{Boris}
Hi,
mit FormulaLocal musst Du nix übersetzen - daher ja auch LOCAL.
Anführungszeichen, die Bestandteil der Formel sind, müssen DOPPELT geschrieben werden.
Am Rande: In Deiner Excelversion gibt es auch schon die Funktionen TEXTKETTE und TEXTVERKETTEN.
VG Boris
AW: VBA - Formel in R1C1 übersetzen
22.12.2021 23:30:15
Andreas
Danke - das mit den Doppel "" war wichtig ! - klappt
Anzeige
AW: VBA - Formel in R1C1 übersetzen
23.12.2021 02:35:56
Daniel
Wenn die Formel in einer Zelle steht, kannst du sie dir im Direktfenster in jeder der vier möglichen Schreibweisen anzeigen lassen.
Mit Hilfe der Funktion REPLACE kannst du dabei auch gleich die " verdoppeln, so dass du das Ergebnis in den Code kopieren kannst ohne weitere Nacharbeit:
?Replace(selection.formular1c1, """", """""")
Gruß Daniel
Anzeige
AW: VBA - Formel in R1C1 übersetzen
23.12.2021 06:24:13
Klaus
Hallo Andreas,
Makrorekorder an
Zelle mit Formel markieren
F2
Enter
Makrorekorder aus
Die Formel steht in korrekter R1C1 Schreibweise in einem neuen Makro und kann von dort kopiert werden.
LG,
Klaus M.
;
Anzeige
Anzeige

Infobox / Tutorial

VBA - Formel in R1C1 übersetzen


Schritt-für-Schritt-Anleitung

Um eine Excel-Formel in R1C1-Schreibweise in VBA zu übersetzen, folge diesen Schritten:

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

  2. Erstelle ein neues Modul: Klicke mit der rechten Maustaste auf "VBAProject (DeinArbeitsblatt)", wähle "Einfügen" und dann "Modul".

  3. Verwende die Formel: Schreibe den folgenden Code in das Modul:

    Sub FormelInR1C1()
        Dim ws As Worksheet
        Set ws = ThisWorkbook.Sheets("DeinBlattname")
    
        ws.Range("A1").FormulaR1C1 = "=IF(RC[-1] <> """", RC[-1], """") & IF(RC[2] <> """", CHAR(10) & ""Bündel: "" & (RC[2]*100) & ""%"", """") & IF(RC[3] <> """", CHAR(10) & ""indiv.: "" & (RC[3]*100) & ""%"", """")"
    End Sub
  4. Anpassungen vornehmen: Ersetze "DeinBlattname" durch den Namen deines Arbeitsblatts und passe die Zelladressen nach Bedarf an.

  5. Führe das Makro aus: Drücke F5, um das Makro auszuführen.


Häufige Fehler und Lösungen

  • Fehler: Anführungszeichen in der Formel
    Wenn du Anführungszeichen in der Formel verwendest, musst du sie doppelt schreiben. Beispiel: """ für ein einfaches Anführungszeichen.

  • Fehler: Falsche Zellreferenz
    Achte darauf, dass du die richtige R1C1-Referenz verwendest. Die Schreibweise RC[-1] bezieht sich auf die Zelle links von der aktuellen Zelle.

  • Fehler: Formel wird nicht übernommen
    Stelle sicher, dass die Zelle im richtigen Format ist und dass du die Formel in der richtigen Schreibweise eingegeben hast.


Alternative Methoden

  1. Makrorekorder verwenden: Du kannst den Makrorekorder aktivieren, eine Zelle mit einer Formel auswählen, F2 drücken und dann Enter. Das Makro wird die Formel in R1C1-Schreibweise aufzeichnen.

  2. Direktes Übersetzen mit VBA: Verwende die Replace-Funktion, um Anführungszeichen automatisch zu verdoppeln, während du die Formel ins Direktfenster eingibst:

    ?Replace(Selection.FormulaR1C1, """", """""")

Praktische Beispiele

Hier sind einige Beispiele für die Verwendung von R1C1 in VBA:

  • Einfaches Beispiel:

    Sub Beispiel()
        Range("B1").FormulaR1C1 = "=RC[-1] + 1"
    End Sub
  • Komplexere Formel:

    Sub KomplexeFormel()
        Range("C1").FormulaR1C1 = "=IF(RC[-2]<>"""", RC[-2] & "" ist nicht leer"", ""Leer"")"
    End Sub

Beide Beispiele zeigen, wie du Zellen mit Formeln in R1C1-Notation befüllen kannst.


Tipps für Profis

  • Verwendung von FormulaLocal: Du musst die Formel nicht manuell übersetzen, wenn du FormulaLocal verwendest. Damit kannst du die Formel in der lokalen Sprache direkt einfügen.

  • Verwende Option Explicit: Füge am Anfang deines Moduls Option Explicit hinzu, um sicherzustellen, dass alle Variablen deklariert sind. Dies hilft, Fehler zu vermeiden.

  • Testen im Direktfenster: Nutze das Direktfenster im VBA-Editor, um kleine Code-Schnipsel zu testen, bevor du sie in dein Makro integrierst.


FAQ: Häufige Fragen

1. Wie kann ich eine Excel-Formel in VBA für mehrere Zellen anwenden?
Du kannst eine Schleife verwenden, um die Formel auf mehrere Zellen anzuwenden. Beispiel:

For i = 1 To 10
    Cells(i, 1).FormulaR1C1 = "=RC[-1] + 1"
Next i

2. Was ist der Unterschied zwischen Formula und FormulaR1C1?
Formula verwendet die A1-Notation, während FormulaR1C1 die R1C1-Notation verwendet, die relative Positionen angibt.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige