Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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