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.

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
Antworten 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
gruß
Marco
Antworten 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
Antworten 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
Antworten 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.
gruß
Marco
Antworten Top
#6
Gelöscht
Schöne Grüße
Berni
Antworten 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
Antworten 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
Antworten Top


Gehe zu:


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