Formel in Excel verknüpfen/verketten/zusammensetzen?
Hallo zusammen,
Gibt es eine Möglichkeit eine Formel zusammen zu setzen/bauen, dass die Formel trotzdem noch ausgerechnet wird?
Ich wollte, dass die Spalte A (z.B. A3) jeweils mit A1 zusammengesetzt wird. A1 kann sich ändern (z.B. "1", "+5"; "/4"; "^2", …).
Ich habe es in Spalte auf zwei Arten versucht, aber es macht die Formel nur als Text und nicht als Formel. Wenn es die Formeln in Spalte B so ausrechnen würde wie es steht wäre es super. Ich kann aber nicht die Formel [=A3$A$1] machen, da es dann immer eine Multiplikation ist. Es soll, aber je, nachdem was in A1 steht eine Addition, Division, … sein können.
In Spalte C habe ich mit der Formel [=FORMELTEXT(B3)] gemacht. Es gibt aber leider nicht eine Formel [=TEXTFORMEL()].
Weiss jemand wie man das mit einer Formel lösen kann?
Vielen Dank schon im Voraus!
Mit freundlichen Grüssen Photelegy
3 Antworten
Das müsste mit der Funktion AUSWERTEN gehen.
https://clevercalcul.wordpress.com/2017/01/10/mit-der-funktion-auswerten-mit-text-rechnen/
Was du suchst ist eine Formel die aus dem Datentyp "Text" (den die Zellen in Spalte B haben) den Datentyp "Formel" macht und auswertet. Also eine Formel die einen Text als Argument erwartet und was da drin ist ausführt.
In den meisten Skriptsprachen, wie PHP oder JavaScript gibt es sowas: die "eval"-Funktion (steht für evaluate). In Excel gibt's aber eine solche Formel nicht. Die meisten Programmierer halten eine solche Funktion für mehr gefährlich als nützlich ("eval is evil"), denn sie ermöglicht die dynamische Ausführung von beliebigem Code. Vermutlich hat Microsoft das deswegen nicht standardmäßig eingebaut um zu verhindern dass irgendein Angreifer einfach einen Text in eine Excel-Mappe schleusen muss der einfach so ausgeführt werden kann wenn man die Mappe öffnet. Wenn man mehr als die "harmlosen" Excel-Funktionen nutzen will muss man auf Makros zurückgreifen, die bewusst aktiviert werden müssen.
Mit Makros sollte sich das umsetzen lassen:
Function TEXTFORMEL(Ref As String)
Application.Volatile
TEXTFORMEL = Application.ThisCell.Parent.Evaluate(Ref)
End Function
Das Makro im Makro-Editor hinzufügen und dann solltest du mit =TEXTFORMEL("...") deinen Text ausführen können
A3 * $A$1
(in A1 das * weglassen)
Danke für deine Antwort. Aber ich will es in A1 so ändern können, dass es auch +5 oder ^2 sein kann.
Ich hoffe, dass es einigermassen verständlich ist was ich machen will.