Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1836to1840
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

komplexe Formel eintragen

komplexe Formel eintragen
13.07.2021 10:07:18
David
Hi Fachleute,
ich verzweifel daran eine "komplexe" Formel per VBA in eine Zelle zu schreiben.
Das Problem ist, das die Formel selbst Anfürhrungs- und &Zeichen besitzt.
Die Formel:
=MITTELWERTWENNS(E$8:E$10000;A$8:A$10000;">="&S108;A$8:A$10000;"<="&MONATSENDE(S108;0))
steht so in der Zelle und macht, was sie soll. Wird aber Händisch, bzw. über .Autofill eingetragen.
In Spalte A Steht das fortlaufende Datum, welches mit dem Monat aus Spalte S verglichen werden soll.
Bei Treffer soll der Mittelwert aus Spalte E gebildet werden.
Das nur zur Erklärung, wie gesagt, die Formel an sich funktioniert.
Dim LetzteZeile As Integer
LetzteZeile = ActiveSheet.Cells(Cells.Rows.Count, 1).End(xlUp).Row + 1
Range("T" & LetzteZeile).Formula = "=MITTELWERTWENNS(E$8:E$10000;A$8:A$10000;">="&S108;A$8:A$10000;"<="&MONATSENDE(S108;0))"
Nun bringt mir VBA natürlich einen Fehler, da die Formel durch "größergleich" beendet wird
Außerdem wollte ich noch ...(S108)... durch ...(S" & LetzteZeile & ")... ersetzten, aber so weit bin ich nie gekommen.

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: komplexe Formel eintragen
13.07.2021 10:09:30
Hajo_Zi
"=MITTELWERTWENNS(E$8:E$10000;A$8:A$10000;"">=""&S108;A$8:A$10000;"" GrußformelHomepage
AW: komplexe Formel eintragen
13.07.2021 10:16:00
David
@ Hajo_Zi
geht leider auch nicht. Immernoch Laufzeitfehler 1004
AW: komplexe Formel eintragen
13.07.2021 10:19:01
Hajo_Zi
ersetze ; durch ,
Gruß Hajo
AW: komplexe Formel eintragen
13.07.2021 10:22:49
David
Damit löse ich dann Laufzeitfehler 13, Typenunverträglichkeit, aus
Anzeige
AW: komplexe Formel eintragen
13.07.2021 10:23:23
Hajo_Zi
Zu Deiner Datei kann ich nichts schreiben, was wohl daran liegt das ich nicht auf fremde Rechner schaue.Ich baue keine Datei nach.
Sollte die Datei verlinkt werden?
Wenn du an Stelle einer Demomappe deine Originalmappe hochladen willst, diese aber sensible Daten enthält, kannst du diese Daten
http://www.ms-office-forum.de/forum/showthread.php?t=322895
ändern.
Bilder lade ich mir nicht runter, da Excel damit nichts anfangen kann.
http://www.excel-ist-sexy.de/bilder-statt-datei/
Hochgeladene Bilder können zwar als solche in Excel importiert werden, sind jedoch bei der Lösung von Problemen nicht sehr hilfreich, da man die eigentlichen Daten nicht ohne große und zeitraubende Umwege direkt in die Tabelle übertragen kann.
Das ist nur meine Meinung zu dem Thema.
http://www.excel-ist-sexy.de/bilder-statt-datei/
Hochgeladene Bilder können zwar als solche in Excel importiert werden, sind jedoch bei der Lösung von Problemen nicht sehr hilfreich, da man die eigentlichen Daten nicht ohne große und zeitraubende Umwege direkt in die Tabelle übertragen kann.
Das ist nur meine Meinung zu dem Thema.
Gruß Hajo
Anzeige
AW: komplexe Formel eintragen
13.07.2021 10:32:02
Daniel
Hi
1. In VBA kannst du auswählen, ob du die Formel in landestypischer Schreibweise (.FormulaLocal) oder unabhängig von der Ländereinstellung in englischer Schreibweise (.Formula)
Also wenn deutsche Formel, dann .FormulaLocal
Wobei .Formula mit englischer Schreibweise sinnvoller ist, dann funktioniert der Code in jdere Länder- und Sprachversion.
2. Anführungszeichen, die zum Formeltext gehören, müssen immer doppelt geschrieben werden ("" statt "), daran unterscheidet sie der Intetpreter von den Anführungszeichen, die den Text im Quellcode
begrenzen.
Damit sollte dann auch das Problem mit dem Einbinden von letzteZeile behoben sein (was du ja prinzipiell richtig machst)
3. das letzteZeile brauchst du in der Formel nicht, wenn du die Z1S1- bzw R1C1-Schreibweise für Zellbezüge verwendet. Ein Bezug auf die Zelle in der Spalte "S" in dergleichen Zeile lautet dann einfach:
ZS19 (.FormulaR1C1Local) bzw RC19 (.FormulaR1C1).
4. Wenn du eine funktionierende Formel hast, dann zeichne das Einfügen doch einfach mit dem Recorder auf oder lass dir den Formeltext im Direktfenster in der bevorzugten Schreibweise ( zur Auswahl stehen: .Formula, .FormulaR1C1, FormulaLocal, .FormulaR1C1Local) anzeigen.
Verdopple dir dabei die ", dann kannst du den Formeltext direkt in deinen Code kopieren:
Im Direktfenster: ?Replace(Selection.FormulaR1C1Local, """", """""")

5. der beste Weg, per VBA eine Formel in mehrere untereinander liegende Zellen einzufügen ist folgender:
- alle Zellen in die die Formel soll markieren
- Formel eingeben
- Eingabe mit STRG+Enger abschließen
Das geht einfacher als mit AutoFill oder FillDown.
Gruß Daniel
Anzeige
AW: komplexe Formel eintragen
13.07.2021 10:58:26
David
Danke an euch beide,
mit den doppel "" und FormulaLocal hat es dann funktioniert!
die LetzteZeile brauch ich schon, der Code ist wesentlich komplexer, als das hier geschriebene.
Der Auszug ist nur ein Bruchteil von dem, was ich mit dem Code mache.
Vielen Dank nochmal
AW: komplexe Formel eintragen
13.07.2021 11:12:06
Daniel
Naja, ist halt trotzdem so, wenn man relative Zellbezüge hat, ist die R1C1-Adressierungsart oft die bessere, weil sie ohne Variable auskommt.
Ansonsten gibt es nicht einen einfachen Weg, um Variablen in die Formel einzufügen:
1. schreibe den Formeltext zunächst in eine Variable. Verwende dabei anstelle des Formelteils, der durch eine andere Variable (letzteZeile) gebildet werden soll, eine Zeichenfolge, die in der Formel sonst nicht vorkommt (z.b. "xxx")
2. tausche dann diese Zeichenfolge durch den Variablenwert aus:

FO = "=Mittelwert(A1:Axxx)"
FO = Replace(FO, "xxx", letzteZeile)
Cells(...).FormulaLocal = fo
Vor allem bei komplexeren Formeln und wenn die Variable mehrfach im Formeltext vorkommen soll ist das viel übersichlicher als die Einzelteile zu verketten.
Gruß Daniel
Anzeige
AW: komplexe Formel eintragen
13.07.2021 10:55:02
GerdL
Hallo David,
zu deiner Datei kann auch ich nichts schreiben. :-)

Range("C108").FormulaLocal = "=" & "MITTELWERTWENNS(E$8:E$10000;A$8:A$10000;"" >= ""&S108;A$8:A$10000;"" 
Gruß Gerd
AW: komplexe Formel eintragen
13.07.2021 11:01:58
Daniel
Hallo Gerd
Gibt es einen Grund, warum du das "=" mit & verkettest anstatt es einfach in den ersten Teilstring mit aufzunehmen?
Also statt ... = "=" & "Mittelwert..." wäre doch ... = "=Mittelwert..." viel einfacher.
Oder übersehe ich da was?
Gruß Daniel
AW: komplexe Formel eintragen
13.07.2021 12:34:40
GerdL
Hallo Daniel,
ja, da ich den Formelstring als String zusammenstelle, erspare ich mir, das "=" & nach dem Testen wieder zu entfernen.
Gruß Gerd
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige