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. zweihundertsechs undfünfzigtausend .dreihundert achtundsiebzig 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
{/codecitation}
{codecitation}
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. 

 

Partnerlinks

Relevante Artikel

Wir benutzen Cookies
Ihre Zufriedenheit ist unser Ziel, deshalb verwenden wir Cookies. Mit diesen ermöglichen wir, dass unsere Webseite zuverlässig und sicher läuft, wir die Performance im Blick behalten und Sie besser ansprechen können. Cookies werden benötigt, damit technisch alles funktioniert und Sie auch externe Inhalte lesen können. Des Weiteren sammeln wir unter anderem Daten über aufgerufene Seiten, getätigte Käufe oder geklickte Buttons, um so unser Angebot an Sie zu Verbessern. Mehr über unsere verwendeten Dienste erfahren Sie unter „Weitere Informationen“. Mit Klick auf „Akzeptieren“ erklären Sie sich mit der Verwendung dieser Dienste einverstanden. Ihre Einwilligung können Sie jederzeit mit Wirkung auf die Zukunft widerrufen oder ändern.