Tutorial: Zahlen in englische Wörter umwandeln in Excel (SpellNumber)

Melden

Hier ist ein ausführliches Tutorial, wie du in Excel arabische Zahlen (z. B. 123) in englische Wörter (z. B. "One Hundred Twenty Three") umwandeln kannst.

Da Excel standardmäßig keine eingebaute Funktion dafür hat, nutzen wir den gängigsten Weg über ein kleines VBA-Makro (SpellNumber).


Excel bietet von Haus aus keine Funktion, um Zahlen direkt als geschriebenen Text (Zahlwörter) auszugeben. Mit Hilfe eines einfachen VBA-Skripts kannst du diese Funktion jedoch in wenigen Minuten selbst hinzufügen.

Schritt 1: Den Visual Basic Editor öffnen

  1. Öffne deine Excel-Arbeitsmappe.
  2. Drücke die Tastenkombination [Alt] + [F11]. Dadurch öffnet sich der Visual Basic Editor (VBA).

Schritt 2: Ein neues Modul erstellen

  1. Klicke im Menü oben auf Einfügen (Insert).
  2. Wähle den Punkt Modul aus. Ein leeres weißes Fenster erscheint.

Schritt 3: Den VBA-Code einfügen

Kopiere den folgenden Code (dies ist eine standardisierte Version der Microsoft-Hilfe) und füge ihn in das leere Modulfenster ein:

Function SpellNumber(ByVal MyNumber)
    Dim Dollars, Cents, Temp
    Dim DecimalPlace, Count
    ReDim Place(9) As String
    Place(2) = " Thousand "
    Place(3) = " Million "
    Place(4) = " Billion "
    Place(5) = " Trillion "

    ' String-Repräsentation der Zahl
    MyNumber = Trim(Str(MyNumber))

    ' Position der Dezimalstelle
    DecimalPlace = InStr(MyNumber, ".")

    ' Wenn Cents vorhanden sind
    If DecimalPlace > 0 Then
        Cents = GetTens(Left(Mid(MyNumber, DecimalPlace + 1) & "00", 2))
        MyNumber = Trim(Left(MyNumber, DecimalPlace - 1))
    End If

    Count = 1
    Do While MyNumber <> ""
        Temp = GetHundreds(Right(MyNumber, 3))
        If Temp <> "" Then Dollars = Temp & Place(Count) & Dollars
        If Len(MyNumber) > 3 Then
            MyNumber = Left(MyNumber, Len(MyNumber) - 3)
        Else
            MyNumber = ""
        End If
        Count = Count + 1
    Loop

    Select Case Dollars
        Case ""
            Dollars = "No Dollars"
        Case "One"
            Dollars = "One Dollar"
        Case Else
            Dollars = Dollars & " Dollars"
    End Select

    Select Case Cents
        Case ""
            Cents = " and No Cents"
        Case "One"
            Cents = " and One Cent"
        Case Else
            Cents = " and " & Cents & " Cents"
    End Select

    SpellNumber = Dollars & Cents
End Function

' Hilfsfunktion für Hunderter
Function GetHundreds(ByVal MyNumber)
    Dim Result As String
    If Val(MyNumber) = 0 Then Exit Function
    MyNumber = Right("000" & MyNumber, 3)
    ' Hunderterstelle
    If Mid(MyNumber, 1, 1) <> "0" Then
        Result = GetDigit(Mid(MyNumber, 1, 1)) & " Hundred "
    End If
    ' Zehner- und Einerstelle
    If Mid(MyNumber, 2, 1) <> "0" Then
        Result = Result & GetTens(Mid(MyNumber, 2))
    Else
        Result = Result & GetDigit(Mid(MyNumber, 3))
    End If
    GetHundreds = Result
End Function

' Hilfsfunktion für Zehner
Function GetTens(TensText)
    Dim Result As String
    Result = ""           ' Ergebnis löschen
    If Val(Left(TensText, 1)) = 1 Then   ' Wert zwischen 10 und 19
        Select Case Val(TensText)
            Case 10: Result = "Ten"
            Case 11: Result = "Eleven"
            Case 12: Result = "Twelve"
            Case 13: Result = "Thirteen"
            Case 14: Result = "Fourteen"
            Case 15: Result = "Fifteen"
            Case 16: Result = "Sixteen"
            Case 17: Result = "Seventeen"
            Case 18: Result = "Eighteen"
            Case 19: Result = "Nineteen"
            Case Else
        End Select
    Else                                 ' Wert zwischen 20 und 99
        Select Case Val(Left(TensText, 1))
            Case 2: Result = "Twenty "
            Case 3: Result = "Thirty "
            Case 4: Result = "Forty "
            Case 5: Result = "Fifty "
            Case 6: Result = "Sixty "
            Case 7: Result = "Seventy "
            Case 8: Result = "Eighty "
            Case 9: Result = "Ninety "
            Case Else
        End Select
        Result = Result & GetDigit _
            (Right(TensText, 1))  ' Einerstelle abrufen
    End If
    GetTens = Result
End Function

' Hilfsfunktion für Einer
Function GetDigit(Digit)
    Select Case Val(Digit)
        Case 1: GetDigit = "One"
        Case 2: GetDigit = "Two"
        Case 3: GetDigit = "Three"
        Case 4: GetDigit = "Four"
        Case 5: GetDigit = "Five"
        Case 6: GetDigit = "Six"
        Case 7: GetDigit = "Seven"
        Case 8: GetDigit = "Eight"
        Case 9: GetDigit = "Nine"
        Case Else: GetDigit = ""
    End Select
End Function

Schritt 4: Den Editor schließen

Du kannst das VBA-Fenster nun einfach schließen (Klick auf das X oben rechts). Du musst nichts extra speichern, solange du die Excel-Datei offen lässt.

Schritt 5: Die Funktion in Excel nutzen

Jetzt kannst du die neue Funktion wie eine ganz normale Excel-Formel verwenden.

  1. Schreibe eine Zahl in Zelle A1 (z. B. 145,50).
  2. Schreibe in eine andere Zelle die Formel: =SpellNumber(A1)
  3. Drücke Enter. Excel gibt nun aus: "One Hundred Forty Five Dollars and Fifty Cents".

Schritt 6: Die Datei richtig speichern

Damit das Makro beim nächsten Mal noch funktioniert, musst du die Excel-Datei in einem speziellen Format speichern:

  1. Gehe auf Datei > Speichern unter.
  2. Wähle als Dateityp Excel-Arbeitsmappe mit Makros (.xlsm).

Tipps für Anpassungen:

  • Währung ändern: Wenn du "Euro" statt "Dollars" möchtest, drücke nochmal Alt + F11 und nutze die Suchen-Ersetzen-Funktion (Strg + H), um im Code "Dollars" durch "Euro" und "Cents" durch "Cent" zu ersetzen.
  • Nur die Zahl ohne Währung: Wenn du nur das Zahlwort ohne "Dollars & Cents" möchtest, müsstest du die Zeilen im Code entfernen, die Dollars = ... und Cents = ... am Ende der Hauptfunktion definieren.

Viel Erfolg beim Umwandeln deiner Zahlen!

0