Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

Zahlen in Formeltext-Funktionsausgabe formatieren

Forumthread: Zahlen in Formeltext-Funktionsausgabe formatieren

Zahlen in Formeltext-Funktionsausgabe formatieren
26.11.2025 12:39:05
Christian96
Guten Tag
Ich möchte das Volumen eines Raumes berechnen und nebst dem Resultat auch die Berechungsformel darstellen (Formeltext).
Die Formel für die Volumenberechnung hat z.B. folgende Eingabe in Zelle A1: "=3.15 * 2.7 * 3+3.1 * 5.2 * 3.5" für einen Raum der in 2 Abschnitte mit unterschiedlichen Raumhöhen unterteilt ist.
Damit in einem Bericht die Berechungsgrundlage dokumentiert ist wird zusätzlich in A2 mit "=Formeltext(A1)" der Formelinhalt ausgegeben.
Ich möchte die Masse (Länge, Breite, Höhe) grundsätzlich mit 2 Nachkommastellen formatieren.
D.H im obenstehenden Beispiel sollte dann in Zelle A2 so aussehen "=3.15*2.70*3.00+3.10*5.20*3.50".
Mit verschachtelten REGEXERSETZEN habe ich mit einigen Klimmzügen mein Ziel erreicht, aber vielleicht kennt jemand eine elegantere Lösung.

Hier soweit mal meine Lösungsidee
A1: "=3.15 * 2.7 * 3 + 3.1 * 5.2 * 3.5" Leerzeichen vor und nach den Operatoren sind zwingend für die Funktionalität
A2: "=ERSETZEN(FORMELTEXT(A1);1;1;" ")" "="- Zeichen entfernen
A3: "=REGEXERSETZEN(A2 &" ";"( [0-9]+) ";"$1.00 ";;0)" Zahlen ohne Nachkommastellen ersetzen
A4: "=REGEXERSETZEN(A3;"( [0-9]+\.[0-9]) ";"$1 0 ";;0)" "Unerwünschter Zwischenschritt um Zahlen mit einer Nachkommastelle zu ersetzen.
A5: "=REGEXERSETZEN(A4;"([0-9]) ([0-9]) ";"$1$2 ";;0)" Zweiter Schritt um Zahlen mit einer Nachkommastelle zu ersetzen.
Führt schlussendlich zu folgender Ausgabe: "3.15 * 2.70 * 3.00 + 3.10 * 5.20 * 3.50"

Vielen Dank im Voraus
Freundliche Grüsse
Christian

PS. Eine Grosse Hilfe wäre auch schon eine Lösung für das kleinere Problem REGEXERSETZEN(A3;"( [0-9]+\.[0-9]) ";"$1 0 ";;0)
Das unerwünschte Leerzeichen im fetten Text zu eliminieren.
Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zahlen in Formeltext-Funktionsausgabe formatieren
26.11.2025 13:45:16
BoskoBiati
Hallo,

und wie wäre es hiermit:

=LET(xa;TEXT(TEXTTEILEN(WECHSELN(FORMELTEXT(A1);"=";"");"*";"+");" #0,00 ");xb;NACHZEILE(xa;LAMBDA(a;TEXTVERKETTEN("*";;a)));TEXTVERKETTEN("+";;xb))


Achtung: Bei mir ist das Dezimaltrennzeichen das Komma!
Gruß

Edgar
AW: Zahlen in Formeltext-Funktionsausgabe formatieren
26.11.2025 15:08:44
daniel
Hi
wenn du in der Formel von A1 vor und nach jeder Zahl! ein Leerzeichen schreibst (was möglich ist)
= 3,15 * 2,7 * 3 + 3,1 * 5,2 * 3,5


dann sollte diese Formel reichen um die Zahlen mit einheitlichen Kommastellen anzuzeigen:
=TEXTKETTE(TEXT(TEXTTEILEN(FORMELTEXT(A1);" ");"0,00"))


solltest du die benötigten Leerzeichen automatisch einfügen wollen, dann müsstest du das Formeltext(A1) noch erweiteren:
=...WECHSELN(WECHSELN(WECHSELN(FORMELTEXT(A1);"=";" = ")"*";" * ");"+";" + ")...

falls weitere Rechenzeichen oder Klammern vorkommen, so benötigt jedes Zusätzliche Zeichen noch ein weitere WECHSELN

Gruß Daniel
Anzeige
AW: Zahlen in Formeltext-Funktionsausgabe formatieren
28.11.2025 11:28:06
Christian96
Vielen Dank für eure Antworten
Dank viele Inputs habe ich eine für mich funktionierende Lösung gefunden die ich euch nicht vorenthalten möchte. Ev. gibt es noch optimierungsmöglichkeiten ;-)
=LET(
xa;FORMELTEXT(F1);
xb;ERSETZEN(xa;1;1;"");
xc;REGEXERSETZEN(xb;"([\)\(\^]+)";" $1 ";;);
xd;REGEXERSETZEN(xc;"([\-\+\*\/]+)";" $1 ";;);
xe;TEXT(TEXTTEILEN(xd;" ");"#0.00");
xf;TEXTVERKETTEN("";FALSCH;xe);
xg;REGEXERSETZEN(xf;"([\+\-\*\/]+)";" $1 ";;);
WECHSELN(xg;"*";"x"))
xa: Text mit Formelinhalt generieren
xb: Gleichheitszeichen eliminieren
xc/xd: Aufgeteilt in 2 Teile, weil wenn das Muster zu komplex ist, die Funktion nicht mehr zuverlässig funktioniert.
Alle "Spezialzeichen wie Operatoren und Klammern mit Leerzeichen umfassen.
xe: Text zerlegen und alle Teile in Zahlen mit definiertem Format umwandeln.
xf: String wieder zusammensetzen.
xg: Leerzeichen bei bestimmten Operatoren wieder einfügen.
Am Ende das Malzeichen * durch ein "x" ersetzen.

Liebe Grüsse
Christian
Anzeige
etwas off topic
28.11.2025 11:34:14
RPP63
Moin!
Wenn Du statt eines * ein x setzen willst, würde ich stattdessen eher ein × nehmen.
Das × ist Zeichen 215 und das korrekte Symbol für Multiplikation.

Two Cents und sorry für das off topic
Ralf
Du könntest z. B. die...
28.11.2025 12:16:35
Case
Moin Christian, :-)

... beiden RegEx: ;-)
REGEXERSETZEN(xb;"([\)\(\^]+)";" $1 ";;);

REGEXERSETZEN(xc;"([\-\+\*\/]+)";" $1 ";;);

Durch ein Pattern ersetzen: ;-)
REGEXERSETZEN(xb;"([()\^+\-*/])";" $1 ";;);

Servus
Case
Anzeige
AW: Du könntest z. B. die...
28.11.2025 13:20:43
Christian96
Guten Tag Case
Vielen Dank für dein Optimierungsvorschlag.
Vielleicht weisst Du es genauer- kann es sein dass innerhalb der eckigen Klammern nicht mehr alle Metazeichen aufgehoben werden müssem?
In meinem Fall wären dies nur noch "-" und "^".
Gruess
Christian
Also das...
28.11.2025 15:11:49
Case
Moin Christian, :-)

… Pattern:
([()\^+\-*/])

Macht folgendes (aus regex101 kopiert): ;-)
Match a single character present in the list below [()\^+\-*/]
()
matches a single character in the list () (case sensitive)
\^ matches the character ^ with index 9410 (5E16 or 1368) literally (case sensitive)
+ matches the character + with index 4310 (2B16 or 538) literally (case sensitive)
\- matches the character - with index 4510 (2D16 or 558) literally (case sensitive)
*/
matches a single character in the list */ (case sensitive)

Siehe - aus https://regex101.com/
Userbild

Deshalb: ;-)
( und ) In einer Character-Class [...] müssen die NICHT escaped werden.
\^ Das Caret-Zeichen muss escaped werden, weil ^ am Anfang einer Klasse eine Sonderbedeutung hat („negieren“).
+ Plus muss nicht escaped werden.
\- Minus muss escaped werden, weil es sonst einen Bereich öffnen würde (z. B. A-Z).
* Sternchen muss nicht escaped werden.
/ Schrägstrich muss nicht escaped werden, kann aber - ist kein Fehler (je nach RegEx-Version).

Ergo sucht das Pattern jedes einzelne dieser Zeichen. ;-)

Und die runden Klammern außen machen eine Capture Group, damit du es mit $1 wieder einfügen kannst. ;-)

Auftrennen musst du das Pattern unter Umständen, wenn du noch sowas brauchst (Größer, Größer Gleich, Ungleich, oder auch Minuszahlen usw.). ;-)

Servus
Case
Anzeige
AW: Also das...
28.11.2025 15:49:41
Christian96
Hi Case
Vielen Dank, dieses Tool kannte ich nicht und es ist Gold wert.

Gruess
Christian
Im Anhang ist...
26.11.2025 23:56:03
Case
Moin Christian, :-)

... eine UDF, welche die Ausgabe immer gleich formatiert: ;-)
https://www.herber.de/bbs/user/179719.xlsb

Servus
Case
Anzeige
AW: Zahlen in Formeltext-Funktionsausgabe formatieren
26.11.2025 14:23:16
Christian96
Vielen Dank Edgar

Die Let-Funktion kannte ich nicht, hatte mir diese aber schon oft gewünscht...
Eine elegante Lösung mit einem kleinen Haken, sobald noch andere Rechenoperationen im Spiel sind "-" oder "/", bzw. Klammern "(" und ")" reichen die 2 Dimensionen nicht mehr. Ich versuche mal mit Deinem Lösungsansatz weiterzukommen.

Gruss
Christian
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige