Clever-Excel-Forum

Normale Version: Formel in Zelle schreiben [mit VBA]
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo liebes Forum,

ich hätte eine Frage bezüglich einer Formel, die ich mithilfe von VBA in eine Zelle in Excel schreiben möchte. Bei der Formel handelt es sich um folgende:

=WENNFEHLER(A!$I$21+AUFRUNDEN(NORMINV(1-WENN(A!K13/2000000 > 0; A!K13/2000000; (1/(10^9))/2000000);0;1);2)*A!$J$21;0)

Ich habe schon einige Varianten ausprobiert, aber ich konnte leider keinen funktionierenden Code erzeugen. Wie müsste ich diese Formel in VBA schreiben,
damit sie korrekt in meiner ausgewählten Zeile landet?
Ich bin auch noch sehr neu auf dem Gebiet mit VBA, deswegen habt bitte etwas Verständnis, falls das auf einige sehr trivial wirkt.
Schon einmal vielen Dank für eure Hilfe!

LG oi81kemu
Hi,

in den Anfängen ist der Makrorekorder absolut empfehlenswert.
a) Starte Aufzeichnung
b) schreibe deine Formel
c) Stoppe Aufzeichnung
= Begutachte was da so passiert
Hallo oi81kemu,

z.B. deine Formel in den Bereich S5:S20 einfügen.

Code:
Range("S5:S20").FormulaLocal = "=WENNFEHLER(A!$I$21+AUFRUNDEN(NORMINV(1-WENN(A!K13/2000000 > 0; A!K13/2000000; (1/(10^9))/2000000);0;1);2)*A!$J$21;0)"
Vielen Dank, @Mase!
Diese Funktion ist schonmal sehr praktisch, allerdings habe ich das Problem, dass sich die Formel immer auf ein jeweils anderes Blatt beziehen soll. Sprich das "A" muss sich automatisch auf das jeweils aktive Sheet beziehen, von dem aus die Funktion ausgeführt wird.
Wie müsste ich das denn dann schreiben? Über das Makro komme ich nur auf direkte Ausdrücke.

Mir wurde bisher die folgende Formel ausgespuckt:

"=IFERROR(A!R[-54]C[7]+ROUNDUP(NORMINV(1-IF(A!R[-62]C[9]/2000000>0,A!R[-62]C[9]/2000000,(1/(10^9))/2000000),0,1),2)*A!R[-54]C[8],0)"

LG oi81kemu
Zitat:...jeweils aktive sheet, vom dem aus die Funktion ausgeführt wird

versteh ich nicht.

Falls Du eine Beispieldatei hast und diese hochladen kannst/möchtest, dann nur zu.
In dieser Datei kannst Du den Zielzustand per Hand eintragen oder zumindest mit ausreichend Informationen kennzeichnen,
sodass nachvollziehbar wird, was du gerne programmieren möchtest.
Gelöscht
Hallo,

unter der Voraussetzung das im Tabellennamen keine Leerzeichen und dergleichen vorhanden sind

Code:
"=IFERROR(" & ActiveSheet.Name & "!R[-54]C[7]+ROUNDUP(NORMINV(1-IF(" & ActiveSheet.Name & "!R[-62]C[9]/2000000>0," & ActiveSheet.Name & "!R[-62]C[9]/2000000,(1/(10^9))/2000000),0,1),2)*" & ActiveSheet.Name & "!R[-54]C[8],0)"
Super, das hat geklappt! Danke, Steffl!

Genau, die Tabellenblätter, auf die sich die Funktion beziehen soll haben jeweils nur die Buchstaben A-Z als Namen.

LG oi81kemu