Registriert seit: 10.04.2014
Version(en): 2016 + 365
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
Registriert seit: 25.11.2021
Version(en): 2019, 365
20.01.2023, 12:44
(Dieser Beitrag wurde zuletzt bearbeitet: 20.01.2023, 12:58 von Ralf A.)
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:1 Nutzer sagt Danke an Ralf A für diesen Beitrag 28
• Rabe
Registriert seit: 13.04.2014
Version(en): 365
20.01.2023, 13:29
(Dieser Beitrag wurde zuletzt bearbeitet: 20.01.2023, 13:34 von BoskoBiati.)
Hallo Ralf (RaBe), ich kann Deinen Fehler nicht nachvollziehen. Wenn man k=5 setzt, dann sind in G5 und H5 die Formeln so: 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:1 Nutzer sagt Danke an BoskoBiati für diesen Beitrag 28
• Rabe
Registriert seit: 10.04.2014
Version(en): 2016 + 365
20.01.2023, 13:44
(Dieser Beitrag wurde zuletzt bearbeitet: 20.01.2023, 13:51 von Rabe.)
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.
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
20.01.2023, 13:45
(Dieser Beitrag wurde zuletzt bearbeitet: 20.01.2023, 13:57 von Kuwer.)
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
Registriert seit: 29.09.2015
Version(en): 2030,5
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
Registriert seit: 28.08.2022
Version(en): 365
Hi,
es ist aber etwas völlig anderes, ob eine Formel oder eine Zahl in einer Zelle steht.
Gruß, Helmut
Win10 - Office365 / MacOS - Office365
|