TEXT-Funktion - Funktionsweise des Backslashes
04.11.2018 15:19:25
Rene
einige kurze Verständnisfragen zur Excel-Text-Funktion:
- Mein Verständnis war, dass die Funktion der " " (Anführungszeichen) bei benutzerdefinierten Formaten, der '\' (Backslash) innerhalb der Textfunktion als eine Art Escapecharakter übernimmt.
- Während ich in ersterem Fall bspw. ein Format wie folgt definieren kann (englische Dezimal- und Tausendertrennzeichen): #,##0.0 "Euro", müsste ich im Falle einer Textfunktion wie folgt definieren: TEXT(B2,"#,##0.0 \E\u\r\o")
- Warum funktioniert aber bspw: TEXT(B2,"#,##0.0 \Euro"), aber dagegen TEXT(B2,"#,##0.0 \Euronen") nicht (#Value!-Fehler)?
- Genauso unverständlich für mich, warum z.B. TEXT(B2,"#,##0 \St. pl.") funktioniert, aber TEXT(B2,"#,##0.0 \Stellpl.") nicht (#Value!-Fehler).
- Aus den beiden letzten Beispielen vermuten ich einmal, dass er Escapecahrakter nur eine bestimmte Anzahl von Zeichen aufnehmen kann? Ich konnte dadurch aber durch Googlen nichts wirklich finden. Vielleicht kann mir jemand auf die Sprünge helfen.
Ich habe dann einmal versucht alternativ die VBA-Formatierungsfunktion zu nutzen, definiert als UDF wie folgt:
Public Function FMT$(ByVal Value, ByVal strFormat)
FMT = VBA.Format$(Value, strFormat)
End Function
Das hat das Thema allerdings nur noch undurchsichtiger gemacht:
Während wie oben dargestellt TEXT(B2,"#,##0.0 \Stellpl.") einen #Value!-Fehler gibt, funktioniert FMT(B2,"#,##0.0 \Stellpl.") korrekt.
Aus FMT(B2,"#,##0 \Stellplätze") wird dagegen nur "Stellplätz", was für mich keinen Sinn ergibt; es sei denn die VBA-Formatfunktion kann nach dem Escapecharakter mehr Charaktere aufnehmen als die TEXT-Funktion.
Als Fix könnte ich zudem z.B. FMT(B2,"#,##0 \Stellplätz\e") definieren. Im Falle der TEXT-Funktion müsste ich die Escapecharaktere dagegen mindestens wie folgt setzen: TEXT(B2,"#,##0.0 \St\ellplätz\e"); dagegen funktionier z.B. aber TEXT(B2,"#,##0.0 \Ste\llplätz\e") nicht; was ich widerum nicht nachvollziehen kann.
Ich hoffe es ist einigermaßen klar, worauf ich hinauswill.
Danke