online 1
gast (50)

/ Forum / Tabellenkalkulation

TabellenkalkulationTabellenkalkulation

Fragevon Rubberduck1 vom 14.07.2021, 08:59 Options

zahl in Text umwandeln

Hallo ihr lieben
Ich habe da mal eine Frage, gibst eine Moeglichkeit bei Excel Zahlen in Text umzuwandeln. Also ich habe in Excel mir eine Moeglichkeit geschaffen um Schecks bequem auszudrucken.
Nur will ich nicht immer den Betrag nochmal in Worte schreiben.
Und dafuer suche ich eine Formel die die Zahl z.b 263,00 € in "zweihundertdreiundsechzig" umwandelt. Habe alles versucht.
Danke im vorraus fuer eure hilfe


Antwort schreiben

Antwort 1 von Yossarian vom 14.07.2021, 09:12 Options

Zitat:
Habe alles versucht.

Interessant. Was heißt "alles"?

Wenn du wirklich ALLES versucht hättest, dann hättest du auch eine Lösung gefunden.

Yossarian

Antwort 2 von Marie vom 14.07.2021, 09:16 Options

http://forum.chip.de/office/excel-zahlen-woerter-umwandeln-68427.html

Excel: Zahlen in Wörter umwandeln

--------------------------------------------------------------------------------

Ich hab jetzt die Lösung selber gefunden. Trotzdem vielen Dank.

Falls es sonst noch jemand braucht hier das VB-Scribt:



Option Explicit

'XL5/7/8-Makros von Hans W. Herber wie folgt Aufruf:

'=ZWORT(Zahl|Bezug]

Dim i%

Function ZWort(Zahl As Double) As String
Dim Teil1$, ATeil$, BTeil$, Rest$

If Fix(Zahl) = 0 Then
If Zahl = 0 Then
ZWort = "null"
Exit Function
Else
ZWort = Format((Zahl - Fix(Zahl)) * 100, "00") & "/100"
Exit Function
End If
End If

If Zahl = Fix(Zahl) Then
Rest = ""
Else
Rest = " " & Format((Zahl - Fix(Zahl)) * 100, "00") & "/100"
End If

If Zahl = 0 Then ZWort = "null": Exit Function
Zahl = Fix(Zahl)
If Zahl = 1 Then ZWort = "eins" & Rest: Exit Function

i = 0
ATeil = Right(Zahl, 3)
ZWort = Hunderter(ATeil)
If Len(Str(Zahl)) < 5 Then GoTo Beenden
Teil1 = ZWort
Zahl = Left(Zahl, Len(Str(Zahl)) - 4)
BTeil = Right(Zahl, 3)
ZWort = Hunderter(BTeil)

If ZWort > "" Then ZWort = ZWort & "tausend"
ZWort = ZWort & Teil1
If Right(ATeil, 3) = 1 Then ZWort = ZWort & "s"
If Len(Str(Zahl)) < 5 Then GoTo Beenden
Teil1 = ZWort
Zahl = Left(Zahl, Len(Str(Zahl)) - 4)
BTeil = Right(Zahl, 3)
ZWort = Hunderter(BTeil)

If BTeil = "1" Then
ZWort = "eine" & "million" & Teil1
Else
If ZWort > "" Then ZWort = ZWort & "millionen"
ZWort = ZWort & Teil1
End If

If Len(Str(Zahl)) < 5 Then GoTo Beenden
Teil1 = ZWort
Zahl = Left(Zahl, Len(Str(Zahl)) - 4)
BTeil = Right(Zahl, 3)
ZWort = Hunderter(BTeil)

If BTeil = "1" Then
ZWort = "eine" & "milliarde" & Teil1
Else
ZWort = ZWort & "milliarden" & Teil1
End If

Beenden:
ZWort = ZWort & Rest
End Function

Private Function Hunderter(Hteil)
Dim eZahl%, Ziffer1$, Ziffer2$, Ziffer3$
eZahl = Right(Hteil, 1)
Hunderter = Einer(eZahl)
Ziffer3 = Hunderter
If Hteil < 10 Then Exit Function
eZahl = Right(Hteil, 2)
If Right(Hteil, 2) < 20 Then
Hunderter = Zehner(eZahl)
Ziffer1 = Hunderter
If Len(Str(Hteil)) < 4 Then Exit Function
End If
eZahl = Mid(Hteil, Len(Hteil) - 1, 1)
If Hunderter <> "" Then
Hunderter = Hunderter & "und" & Zehner1(eZahl)
Else
Hunderter = Zehner1(eZahl)
Ziffer1 = Hunderter
End If
If Hteil < 100 Then Exit Function
eZahl = Mid(Hteil, Len(Hteil) - 2, 1)
eZahl = Mid(Hteil, Len(Str(Hteil)) - 3, 1)
If Right(Hteil, 2) < 10 Then
If Mid(Hteil, 2, 1) = 0 And Right(Hteil, 1) = 1 Then
Hunderter = Einer(eZahl) & "hunderteins"
Else
Hunderter = Einer(eZahl) & "hundert" & Ziffer3
End If

ElseIf Right(Hteil, 2) > 9 And Right(Hteil, 2) < 20 Then
Hunderter = Einer(eZahl) & "hundert" & Ziffer1
Else
Hunderter = Einer(eZahl) & "hundert" & Hunderter
End If
End Function

Private Function Einer(EinerZahl)
Select Case EinerZahl
Case Is = 1
Einer = "ein"
Case Is = 2
Einer = "zwei"
Case Is = 3
Einer = "drei"
Case Is = 4
Einer = "vier"
Case Is = 5
Einer = "fünf"
Case Is = 6
Einer = "sechs"
Case Is = 7
Einer = "sieben"
Case Is = 8
Einer = "acht"
Case Is = 9
Einer = "neun"
End Select
End Function

Private Function Zehner(ZehnerZahl)
Select Case ZehnerZahl
Case Is = 10
Zehner = "zehn"
Case Is = 11
Zehner = "elf"
Case Is = 12
Zehner = "zwölf"
Case Is = 13
Zehner = "dreizehn"
Case Is = 14
Zehner = "vierzehn"
Case Is = 15
Zehner = "fünfzehn"
Case Is = 16
Zehner = "sechzehn"
Case Is = 17
Zehner = "siebzehn"
Case Is = 18
Zehner = "achtzehn"
Case Is = 19
Zehner = "neunzehn"
End Select
End Function

Private Function Zehner1(ZehnerZahl)
Select Case ZehnerZahl
Case Is = 2
Zehner1 = "zwanzig"
Case Is = 3
Zehner1 = "dreißig"
Case Is = 4
Zehner1 = "vierzig"
Case Is = 5
Zehner1 = "fünfzig"
Case Is = 6
Zehner1 = "sechzig"
Case Is = 7
Zehner1 = "siebzig"
Case Is = 8
Zehner1 = "achtzig"
Case Is = 9
Zehner1 = "neunzig"
End Select
End Function

Antwort 3 von Marie vom 14.07.2021, 09:22 Options

http://www.supportnet.de/threads/1704752 na und hier haben wir sowas ja schon als Download, probier mal

Gruß marie

Antwort 4 von Yossarian vom 14.07.2021, 09:24 Options

Kurze Suche:

Ein Add-In für Excel (kostenlos):
http://www.add-in-world.com/katalog/xl-zahlinworten/

Beschreibung einer Funktion:
http://www.herber.de/forum/archiv/156to160/t156792.htm

Yossarian

Antwort 5 von Yossarian vom 14.07.2021, 09:26 Options

Siehste wie schnell das geht, wenn man ALLES versucht ;o)

Yossarian

Antwort 6 von Marie vom 14.07.2021, 11:22 Options

Zitat:
Wenn du wirklich ALLES versucht hättest, dann hättest du auch eine Lösung gefunden.
Mit solchen Antworten vergraulst Du bestenfalls die Leute, die hier fragen, was soll das denn?

Antwort 7 von son_quatsch vom 14.07.2021, 11:37 Options

Das soll aufzeigen, dass die Formulierung Ich habe alles versucht nicht den geringsten Informationsgehalt für jeden Helfer hat, Marie.

Antwort 8 von nighty vom 14.07.2021, 16:05 Options

hi all ^^

ich probiere mich gerade *hihi*

also ich finde das die

"elf"

und

"zwölf"

total aus der reihe tanzen

gruss nighty

p.s.
ergebnis folgt als function :-))

nur wer testet *arghhh*

Antwort 9 von nighty vom 14.07.2021, 20:57 Options

hi all ^^

erster versuch ^^

gruss nighty

Function ZahlText(Zellen As Variant) As Variant
    Application.Volatile
    Dim Erg As String, Einer As String, Zehner As String, Hunderter As String, Tausender As String
    Dim Rdrei As String, Ldrei As String
    Dim TextEiner As Variant, TextZehner As Variant, TextHT As Variant
    Dim Schalter As Boolean
    Dim DreiAnz As Integer, Zaehler As Integer
    TextEiner = Array("", "Ein", "Zwei", "Drei", "Vier", "Fünf", "Sechs", "Sieben", "Acht", "Neun", "Zehn", "Elf", "Zwölf")
    TextZehner = Array("", "zehn", "Zwanzig", "Dreizig", "Vierzig", "Fünfzig", "Sechzig", "Siebzig", "Achtzig", "Neunzig")
    TextHT = Array("Hundert", "Tausend")
    If Len(Zellen) > 3 Then
        Rdrei = Mid(Zellen, Len(Zellen) - 2, 3)
        Ldrei = Mid(Zellen, 1, Len(Zellen) - 3)
        DreiAnz = 1
    Else
        Ldrei = Zellen
    End If
    For Zaehler = 0 To DreiAnz
        If Len(Ldrei) > 0 Then Einer = Mid(Ldrei, Len(Ldrei), 1)
        If Len(Ldrei) > 1 Then Zehner = Mid(Ldrei, Len(Ldrei) - 1, 1)
        If Len(Ldrei) > 2 Then Hunderter = Mid(Ldrei, Len(Ldrei) - 2, 1)
        If Len(Ldrei) = 1 Then
            Erg = Erg & TextEiner(Einer)
        End If
        If Len(Ldrei) = 2 Then
            If Ldrei > 12 Then
                Erg = Erg & TextEiner(Einer)
                If Ldrei > 12 And Zehner > 1 And Einer > 0 Then Erg = Erg & "und"
                Erg = Erg & TextZehner(Zehner)
            End If
            If Ldrei < 13 Then
                Erg = Erg & TextEiner(Ldrei)
            End If
        End If
        If Len(Ldrei) = 3 Then
            Erg = Erg & TextEiner(Hunderter)
            Erg = Erg & TextHT(0)
            If Zehner = 1 And Einer < 3 Then
                Erg = Erg & TextEiner(Mid(Ldrei, 2, 2))
            Else
                Erg = Erg & TextEiner(Einer)
                If Zehner > 0 Then Erg = Erg & "Und"
                Erg = Erg & TextZehner(Zehner)
            End If
        End If
        Ldrei = Rdrei
        If DreiAnz = 1 And Schalter = False Then
            Erg = Erg & TextHT(1)
            Schalter = True
        End If
    Next Zaehler
    ZahlText = Erg
End Function

Antwort 10 von nighty vom 15.07.2021, 10:10 Options

hi all ^^

noch eine kurzerklaerung fuer vb begeisterte :-)

statt die einzelnen positionen in reihenfolge abzufragen,hab ich dreier positionen gebildet

z.b.
12 456

gewanfdelt in

12
ein zehner,zwei einer

456
vier hunderter,fünf zehner,sechs einer

somit lassen sich die immer wiederkehrenden dreierblöcke leicht zerlegen und zuordnen

die function erlaubt ganze zahlen mit bis zu 6 positionen,die nach obiger erklaerung leicht erweiterbar waere

gruss nighty

Antwort 11 von KJG17 vom 15.07.2021, 13:45 Options

Hallo,

für den gewünschten Einsatzzweck ist das alles eigentlich viel zu überzogen, macht aber offensichtlich mehr Spaß.

Bei Schecks muss 'in Worten' nur eindeutig und lesbar sein, statt 'zweihundertdreiundsechzig' ist also auch eine Schreibweise ***ZWEI*SECHS*DREI*** zulässig, wobei in diesem Beispiel *** Anfang und Ende markieren und * als Trenner verwendet wurde, ==ZWEI-SECHS-DREI== wäre aber genauso eindeutig.

Es müssen also lediglich zehn verschiedene Einzelziffern in der richtigen Reihenfolge in Worten ausgegeben werden, icl. Anfangs- und Endkennung sowie Trennern. Bei einer rechnergestützten Scheckausstellung ist das eigentlich Usus.

Gruß
Kalle

Ähnliche Themen

Umwandeln einer Zahl in einen Text
wisi200  01.04.2008 - 290 Hits - 2 Antworten

Zellfarbe im Excel in zahl umwandeln
Makro71  12.06.2008 - 94 Hits - 1 Antwort

Excel: Zahl in KB MB und GB umwandeln
schroll  28.07.2008 - 43 Hits - 2 Antworten

Datum nach übernahme aus UserForm in Zahl umwandeln
BenjaminM  12.01.2009 - 151 Hits - 12 Antworten

Formeln in Excel, Buchstabe in Zahl umwandeln
maus_i  10.04.2009 - 660 Hits - 2 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Mon Jan 26 01:23:17 2026