VBA: FormulaR1C1 wechseln zu FormulaLocal
#1
Hallo zusammen,

nach vielen Monaten mal wieder ein Beitrag (mit einer Frage) von mir:

Wie kann ich die folgende R1C1-Formel in Local ändern?
Also, ich möchte die Original-Formel mit WENNFEHLER abfangen, wie muß ich das formulieren?
Code:
                Cells(k, 7).FormulaR1C1 = "=IFERROR(RC[-2]/RC[-3]*100,0)"
'original                Cells(k, 7).FormulaLocal = "=E" & k & "/D" & k & "*100"
                Cells(k, 8).FormulaR1C1 = "=IFERROR(RC[-2]/RC[-4],0)"
'original                Cells(k, 8).FormulaLocal = "=F" & k & "/D" & k
Wenn ich es so mache, kommt der "'NAME?"-Fehler:
Cells(k, 7).FormulaLocal = "=IFERROR(E" & k & "/D" & k & "*100 ,0)"

Ich bitte um Hilfe.

Gruß Ralf
Antworten Top
#2
Hi,

FormulaLocal ist keine wirklich gute Idee. Es sei denn, Du bist Dir sicher, dass Dein Programm tatsächlich nur in Deinem Land benutzt wird.

Wenn Dein Land = D ist, dann musst Du bei FormulaLocal natürlich auch die deutschen Funktionsbezeichnungen verwenden.

Bsp.: Cells(1,1).FormulaLocal = "=Summe(B2:V6)"

also Summe statt Sum und Semikolon statt Komma als Parameterseparator.

Besser ist es, Du verwendest Formula. Das funktioniert international und Du kannst die englischen Funktionsbezeichnungen verwenden.
RC (Row, Column, also Zeile/Spalte) musst Du halt durch die tatsächlich gewünschten Adressen ersetzen. Relative und absolute Bezüge dabei beachten.

Das
Code:
Cells(k, 7).FormulaLocal = "=IFERROR(E" & k & "/D" & k & "*100 ,0)"
kann nicht funktionieren, weil Du keinen Bereich definierst.
musst Du so ersetzen:
Code:
Cells(k, 7).Formula = "=IFERROR(" & cells(7,k-2).address  & "/" & cells(4,k).address & " *100 ,0)"
also, cells(7,k-2) entspricht der Zelle in Zeile 7 und der durch k definierten Spalte 2 nach links daneben. Alles klar? :)
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben.
Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.

Ciao, Ralf

[-] Folgende(r) 1 Nutzer sagt Danke an Ralf A für diesen Beitrag:
  • Rabe
Antworten Top
#3
Hallo Ralf (RaBe),

ich kann Deinen Fehler nicht nachvollziehen. Wenn man k=5 setzt, dann sind in G5 und H5 die Formeln so:


Code:
=E5/D5*100
=F5/D5


Also liegt es wohl nicht an einer falschen Umsetzung der Formel.
mit WENNFHLER dann so:

Code:
Cells(k, 7).FormulaLocal = "=Wennfehler(E" & k & "/D" & k & "%;"""")"
Cells(k, 8).FormulaLocal = "=Wennfehler(F" & k & "/D" & k & ";"""")"
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
[-] Folgende(r) 1 Nutzer sagt Danke an BoskoBiati für diesen Beitrag:
  • Rabe
Antworten Top
#4
Hallo Edgar,

ja, das ist das, was momentan drin steht.
Ich will aber ein DIV/NULL abfangen durch WENNFEHLER(...)

Also nochmal, ausführlicher erklärt:

Die Originalformel in der Zelle durch die Makrozeile:
Cells(k, 7).FormulaLocal = "=E" & k & "/D" & k & "*100"
war
=E5/D5*100


In der Zelle soll nach dem Makrolauf drin stehen:
=WENNFEHLER(E5/D5*100;0)
dazugehörige, funktionierende Makroformel mit R1C1 (aufgezeichnet):
Cells(k, 7).FormulaR1C1 = "=IFERROR(RC[-2]/RC[-3]*100,0)"

Wie lautet die entsprechende Local-Formel?

Gruß Ralf



Aaah, jetzt hast Du nochmal geändert. Ja, so geht es.

Danke.
Antworten Top
#5
Hallo Ralf,

  Cells(k, 7).Formula = "=IFERROR(E" & k & "/D" & k & "*100 ,0)"
oder
  Cells(k, 7).FormulaLocal = "=WENNFEHLER(E" & k & "/D" & k & "*100 ;0)"

Ergänzung zum Herausfinden der richtigen Syntax:
Code:
Sub aab()
  With ActiveCell
    Debug.Print .Formula
    Debug.Print .FormulaLocal
    Debug.Print .FormulaR1C1
    Debug.Print .FormulaR1C1Local
  End With
End Sub

Gruß Uwe
Antworten Top
#6
Du arbeitest mit VBA, dann verwende VBA, statt Excel:

Code:
if cells(k,4)<>0 then cells(k,7)=cells(k,5)/cells(k,4)*100
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#7
Hi,

es ist aber etwas völlig anderes, ob eine Formel oder eine Zahl in einer Zelle steht.
Gruß,
Helmut

Win10 - Office365 / MacOS - Office365
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste