Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1404to1408
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

Ergebnis ist Formel und soll berechnet werden

Ergebnis ist Formel und soll berechnet werden
04.02.2015 17:32:15
ToNi
Hallo zusammen,
nach langen recherchen bin ich jetzt dazu gekommen mein Problem gemeinsam mit euch zu lösen.
Ich habe folgendes Problem:
In Zelle B1 steht eine Formel als Text: 107-59,51*LOG10(f/0,15)
In Zelle B2 wird diese Formel bearbeitet: =ERSETZEN($B$1;FINDEN("f";$B$1);1;A2)
Die führt zu dem Ergebnis: 107-59,51*LOG10(0,15/0,15) da in A2 0,15 steht.
Diese Formel aus B2 hätte ich nun gerne ausgerechnet.
Ich hab es mit =Wert(B2) versucht, aber leider ohne Erfolg.
Mit Vba bekomme ich es hin, hätte es aber gerne ohne.
Wenn ich die Zelle Kopiere und als Wert einfüge und anschließend ein = davor setzte geht es.
Habe auch folgendes versucht: ="="&=ERSETZEN($B$1;FINDEN("f";$B$1);1;A2) leider ohne Erfolg.
Ich hoffe Ihr könnt mich verstehen und mir helfen.
gruß ToNi

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Ist generell nur mit XLM-Fkt AUSWERTEN oder ...
04.02.2015 19:32:15
Luc:-?
…VBA auf Basis der vbFkt Evaluate möglich, ToNi;
wie dir ja schon Werner mitgeteilt hat, erfordert das (idR) Speicherung als .xlsm/b.
Falls es dir nur darum geht, die Datei auch als .xlsx speichern zu können, musst du ein AddIn (.xlam/b) verwenden, das generell in Xl eingebunden wdn kann. In diesem AddIn müsste dann eine UDF wie zB LetFormula stehen, auf die du dich dann per ZellFml beziehen kannst. Allerdings verlangt diese einen original notierten FmlText, also zB so:
=LetFormula("107-59.51*LOG10(A2/0.15)") oder
=LetFormula(WECHSELN(WECHSELN(B1;"f";A2);",";".")) oder
=LetFormula(B2)
falls B2 entsprd aufbereitet wird. Statt direkt A2 zu verwenden, kann auch auch "A2" geschrieben wdn, was günstiger ist, weil dann gleich der richtige DezimalTrenner verwendet wird. Den DezTrennerAustausch könnte aber generell auch die UDF in Abhängigkeit von den lokalen Einstellungen vornehmen.
Noch einfacher ist es, wenn vor den Original-FmlText ein = gesetzt wird. Dadurch wird er zur Fml, die zwar einen Fwert liefert, worauf es aber nicht ankommt. Mit den nachfolgend notierten 1zeiligen UDFs kann man sich dann die ganze Umänderung der lokalen Notation (FktsNamen, DezTrenner, ListTrenner) ersparen, so dass folgende Fml ausreichend wäre:
=LetFormula(WECHSELN(GetFormula(B1);"f";"A2"))
Function GetFormula(Bezug): GetFormula = Bezug.Formula: End Function
Function LetFormula(Bezug): LetFormula = Evaluate(CStr(Bezug)): End Function
Man könnte natürlich auch eine einzige UDF aus den beiden machen und dort noch einige Spezifika berücksichtigen, aber das ist ja nicht wesentlich, da es mir hier nur ums Prinzip geht.
Wollte man direkt einen lokalen, nicht-englischen FmlText evaluieren, müsste das ganz ähnlich erfolgen, der lokale FmlText müsste zur Fml wdn, die dann uU auch direkt aus einer umgebenden AuswertungsFml als Text in OriginalNotation herausgefiltert wdn kann.
Anders (ganz ohne VBA) ist das nur so möglich, wie du es bereits getan hast.
Gruß, Luc :-?
Besser informiert mit …
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige