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

Formula2R1C1

Forumthread: Formula2R1C1

Formula2R1C1
30.04.2020 17:45:33
Steve
Moin Leute,
kann mir mal Bitte jemand den Unterschied sagen zwischen
.FormulaR1C1 und .Formula2R1C1
Ich habe ein Makro erstellt unter Excel 365 - das funktioniert auch.
Dasselbe Makro läuft bei Excel 2016 nicht. Wenn ich aber die "2" weglösche, geht es wieder.
Ist das ein Versionsproblem oder hab ich einen Denkfehler? Ich hatte das ganze mit dem Makrorecorder aufgenommen.
Also die Formel erstellt, kopiert und eingefügt bei laufendem Recorder. Dann erhielt ich die unten stehende Zeile. Die habe ich weiterverwendet.
.Formula2R1C1 = "=IFNA(IF(RC2"""",(INDEX(T_Liste1[#All],MATCH(RC2,N_LISTENR,0),MATCH(R1C,T_Liste1[@],0)+1)),""""),"""")"
Ich finde leider im Netz nur etwas darüber auf Englisch. Demnach ist das Formula2 für Arrays (sofern ich das richtig verstanden habe) Habe damals gedacht ich müsste das alles als Array realisieren. Aber dem war nicht so.
Kann mich da jemand Bitte aufklären.
Herzlichst
Steve
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Formula2R1C1
30.04.2020 18:23:45
Nepumuk
Hallo Steve,
die Eigenschaft Formula2R1C1 gibt es nicht.
Gruß
Nepumuk
Das hat mich verwirrt.
02.05.2020 12:56:44
Steve
Moin Nepomuk,
deine Antwort hat mich reichlich verwirrt. Ich hab sie ja im Makro stehen und das funktioniert auch.
Wenn auch nur zuhause.
Aber der Beitrag von Rudi hat geholfen. Ich habe das hier gefunden aber noch nicht vollständig verstanden:
https://docs.microsoft.com/de-de/office/vba/api/excel.range.formula2
Ich kam noch nicht dazu zu überprüfen ob es zuhause auch funktioniert wenn ich die "2" einfach lösche.
Ich teste das mal und gebe Rückmeldung.
WENN es allerdings nicht funktioniert, habe ich eine Idee.
Dann kann ich doch einfach das Makro so umbauen, das ich mit IF ELSE die Fehlermeldung abfange und dann die andere Version benutze. Korrekt?
Liebe Grüße und Danke
Steve
Anzeige
AW: Das hat mich verwirrt.
02.05.2020 13:33:23
Nepumuk
Hallo Steve,
ja, das geht. Du musst nur:
Public Sub test()
    If Val(Application.Version) > 15 Then
        ActiveCell.Formula2R1C1 = "=R2C"
    Else
        ActiveCell.FormulaR1C1 = "=R2C"
    End If
End Sub

Wobei ich nicht weiß, ab welcher Version die neue Eigenschaft hinzugefügt wurde.
Gruß
Nepumuk
Anzeige
AW: Das hat mich verwirrt.
02.05.2020 13:59:16
Steve
Moin Nepomuk,
Ui, an ein Versionabgleich hatte ich garnicht gedacht.
Dachte eher an sowas wie WENN FEHLER DANN
Aber ein Versionabgleich erscheint mir eine viel schönere und sauberere Lösung zu sein.
Ich könnte mir vorstellen, dass es mit dem letzten Update war. Das hat mir nämlich lauter "@" z.B. in Formeln reingemacht und dabei die Arbeit von einem ganzen Tag verändert.
Ich werde das zuhause mal umschreiben und dann testen.
Ich gebe Rückmeldung. Wird aber ein wenig dauern.
Liebe Grüße und Danke
Steve
Anzeige
Formula2 ist eine (Range)-Eigenschaft von XL 365
02.05.2020 19:35:21
XL
Hallo zusammen,
Die Formula2...sind Eigenschaften einer Range in XL 365
Die Formula... Eigenschaften werden aus Gründen der Rückwärts-Kompatibilität beibehalten,
d.h. im Moment können solche aufgezeichneten Code gefahrlos auf letztere geändert werden (also ohne die 2) und sollten dann in älteren XL Versionen lauffähig sein.
Die ersteren wurden eingeführt um das dynamische Array-Verhalten von XL zu unterstützen. Siehe dazu v.a. Kapitel 1 "Formulas Can Now Spill" in EXCEL DYNAMIC ARRAYS
Gruess Hansueli
Anzeige
Danke...
04.05.2020 11:44:50
Steve
Moin Leute,
danke für eure Beiträge. Ich habe es mittlerweile ausprobiert und es funktioniert dennoch.
Da bin ich froh, denn ich dachte schon ich muss alles umändern.
Bleibt gesund
Liebe grüße
Steve
AW: Danke...
04.05.2020 17:05:25
Hajo_Zi
Hallo Stehe,
offen bedeutet es soll noch eine Antwort kommen.
Warum ist dein Beitrag Offen.
Das ist nur meine Meinung zu dem Thema.

Anzeige
;
Anzeige

Infobox / Tutorial

Unterschiede zwischen FormulaR1C1 und Formula2R1C1 in Excel VBA


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und aktiviere den VBA-Editor: Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Erstelle ein neues Modul: Klicke im Projekt-Explorer mit der rechten Maustaste auf dein Projekt und wähle Einfügen > Modul.
  3. Füge den folgenden VBA-Code ein:
    Public Sub TestFormula()
        If Val(Application.Version) > 15 Then
            ActiveCell.Formula2R1C1 = "=R2C"
        Else
            ActiveCell.FormulaR1C1 = "=R2C"
        End If
    End Sub
  4. Schließe den VBA-Editor und kehre zu Excel zurück.
  5. Führe das Makro aus: Drücke ALT + F8, wähle TestFormula und klicke auf Ausführen.

Mit diesem Makro wird automatisch die richtige Formel verwendet, abhängig von der Excel-Version.


Häufige Fehler und Lösungen

  • Fehler: „Eigenschaft nicht gefunden“
    Mögliche Ursache: Du verwendest eine Excel-Version, die Formula2R1C1 nicht unterstützt. In diesem Fall solltest Du auf FormulaR1C1 zurückgreifen.

  • Fehler: Formel funktioniert nicht
    Wenn Deine Formel nicht wie erwartet funktioniert, prüfe die Syntax und stelle sicher, dass die entsprechenden Zellbezüge korrekt sind. Manchmal kann auch das Hinzufügen von IFERROR helfen.


Alternative Methoden

Wenn Du mit Formula2R1C1 nicht arbeiten kannst, gibt es einige Alternativen:

  1. Verwendung von Formula: Wenn Du keine dynamischen Arrays benötigst, kannst Du einfach ActiveCell.Formula = "Deine Formel" verwenden.
  2. Direkte Zellverweise: Statt Formeln zu verwenden, kannst Du auch die Werte direkt in die Zellen eingeben, um Berechnungen durchzuführen.

Praktische Beispiele

  1. Beispiel mit FormulaR1C1:

    ActiveCell.FormulaR1C1 = "=SUM(R[-1]C:R[-10]C)"

    Dies summiert die Werte der Zellen in der gleichen Spalte, die sich in den 10 Zeilen über der aktiven Zelle befinden.

  2. Beispiel mit Formula2R1C1:

    ActiveCell.Formula2R1C1 = "=FILTER(Tabelle1!C1:C10, Tabelle1!C1:C10>0)"

    Dieses Beispiel verwendet die FILTER-Funktion, die nur in Excel 365 verfügbar ist.


Tipps für Profis

  • Nutze den Makrorecorder: Der Makrorecorder kann Dir helfen, die richtige Syntax für Formeln zu finden, während Du in Excel arbeitest.
  • Teste Deine Makros in verschiedenen Excel-Versionen: Um sicherzustellen, dass Deine VBA-Formeln überall funktionieren, teste sie in den Versionen, die Du unterstützen möchtest.
  • Erfahre mehr über dynamische Arrays: Wenn Du mit Excel 365 arbeitest, solltest Du dich mit den neuen Funktionen wie FILTER, SORT und UNIQUE vertraut machen.

FAQ: Häufige Fragen

1. Was ist der Unterschied zwischen FormulaR1C1 und Formula2R1C1?
FormulaR1C1 ist die traditionelle Methode zur Eingabe von Formeln in VBA, während Formula2R1C1 für die Unterstützung dynamischer Arrays in Excel 365 entwickelt wurde.

2. Warum funktioniert mein Makro nur in Excel 365?
Das liegt daran, dass Formula2R1C1 nur in Excel-Versionen unterstützt wird, die die Funktionen für dynamische Arrays implementiert haben. In älteren Versionen solltest Du FormulaR1C1 verwenden.

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