Zahlen in Text umwandeln

Mit Hilfe des nachfolgend vorgestellten VBA-Codes, können Zahlen (Ziffern) in Wörter (Zahlwörter) umgewandelt werden.

So wird beispielsweise die Zahl 91.256.378 in das Zahlwort
einundneunzigmillionen.zweihundertsechsundfünfzigtausend.dreihundertachtundsiebzig 
umgewandelt.

Das Makro kann dabei mit allen Zahlen zwischen 0 und 999Milliarden.999Millionen.999Tausend.999 umgehen und wandelt diese Zahlen entsprechend in Wörter um.

So sieht der VBA-Code aus:

'* wandelt Zahlen im Bereich 0-999Milliarden.999Millionen.999Tausend.999 in Worte um
'* Special thanks to Karl Donaubauer
Public Function ZahlenInText(Zahl As Double)
 Dim z$, w$, r%, i%
z = Int(Zahl)
 If z = 0 Then ZahlenInText = "null": Exit Function
For i = 9 To 0 Step -3
 If Len(z) > i Then
 r = Right(Int(z / (10 ^ i)), 3)
 If r > 99 Then w = FctZif(1, Left(r, 1), w) & "hundert": r = Right(r, 2)
 If r > 19 Then w = FctZif(3, Right(r, 1), w): w = FctZif(4, Left(r, 1), w)
 If i = 0 And Right(z, 3) Like "00*" And r > 0 Then w = w & "und"
 If r < 10 Then w = FctZif(1, r, w)
 If r > 9 And r < 20 Then w = FctZif(2, Right(r, 1), w)
 If i = 9 And Len(z) > 9 And r = 1 Then
 w = "einemilliarde."
 Else
 If i = 9 And Right(Int(z / 13 ^ i), 3) >= 0 Then w = w & "milliarden."
 End If
 If i = 6 And Len(z) = 7 And r = 1 Then w = "einemillion."
 If i = 6 And Right(Int(z / 10 ^ i), 3) > 1 Then w = w & "millionen."
 If i = 3 And Right(Int(z / 10 ^ i), 3) > 0 Then w = w & "tausend."
 If i = 0 And r = 1 Then w = w & "s"
 End If
 Next
ZahlenInText = w
End Function

Function FctZif(Par As Byte, r As Integer, w As String)
w = w & Choose(r, "ein", "zwei", "drei", "vier", "fünf", "sech", "sieb", "acht", "neun")
Select Case Par
 Case 1, 3
 If r = 6 Then w = w & "s"
 If r = 7 Then w = w & "en"
 If Par = 3 And r > 0 Then w = w & "und"
 Case 2
 w = w & "zehn"
 If r = 1 Then w = Left(w, Len(w) - 7) & "elf"
 If r = 2 Then w = Left(w, Len(w) - 8) & "zwölf"
 Case 4
 If r = 2 Then w = Left(w, Len(w) - 4) & "zwan"
 w = w & "zig"
 If r = 3 Then w = Left(w, Len(w) - 3) & "ßig"
 End Select
FctZif = w
End Function

Fügen Sie den Code (beide Funktionen) einfach in ein leeres Code-Modul ein.

Über die neue Funktion =ZAHLENINTEXT(Zahl) wird die Umwandlung durchgeführt.

Tragen Sie dazu einfach in einer beliebigen Zellen die neue Funktion ein. Der Funktion können Sie sowohl direkt die Zahl oder einen Zellbezug übergeben. 

Der VBA-Code wurde von Herbert Grom zur Verfügung gestellt.