Formel in Zelle schreiben [mit VBA]
#1
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
Top
#2
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
Top
#3
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)"
Gruß Karl
Top
#4
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
Top
#5
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.
Top
#6
Gelöscht
Schöne Grüße
Berni
Top
#7
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)"
Gruß Stefan
Win 10 / Office 2016
Top
#8
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
Top


Gehe zu:


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