Registriert seit: 11.06.2019
Version(en): 1808
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
Registriert seit: 17.04.2019
Version(en): M$ 365 AfE v2009 / Office2013
11.06.2019, 11:28
(Dieser Beitrag wurde zuletzt bearbeitet: 11.06.2019, 11:32 von Mase.
Bearbeitungsgrund: edit: korrekturen
)
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
Registriert seit: 14.05.2017
Version(en): MS Office Prof. Plus 2016_32-Bit
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
Registriert seit: 11.06.2019
Version(en): 1808
11.06.2019, 12:55
(Dieser Beitrag wurde zuletzt bearbeitet: 11.06.2019, 12:58 von oi81kemu.)
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
Registriert seit: 17.04.2019
Version(en): M$ 365 AfE v2009 / Office2013
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.
Registriert seit: 02.05.2018
Version(en): Excel 365 & 2016
11.06.2019, 13:27
(Dieser Beitrag wurde zuletzt bearbeitet: 11.06.2019, 13:27 von MisterBurns.)
Gelöscht
Schöne Grüße
Berni
Registriert seit: 11.04.2014
Version(en): Office 2007
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
Registriert seit: 11.06.2019
Version(en): 1808
11.06.2019, 16:09
(Dieser Beitrag wurde zuletzt bearbeitet: 11.06.2019, 16:09 von oi81kemu.)
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