6k Aufrufe
Gefragt in Tabellenkalkulation von rubberduck1 Einsteiger_in (3 Punkte)
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

11 Antworten

0 Punkte
Beantwortet von
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
0 Punkte
Beantwortet von marie Experte (2k Punkte)
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
0 Punkte
Beantwortet von marie Experte (2k Punkte)
www.supportnet.de/threads/1704752 na und hier haben wir sowas ja schon als Download, probier mal

Gruß marie
0 Punkte
Beantwortet von
Kurze Suche:

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

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

Yossarian
0 Punkte
Beantwortet von
Siehste wie schnell das geht, wenn man ALLES versucht ;o)

Yossarian
0 Punkte
Beantwortet von marie Experte (2k Punkte)
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?
0 Punkte
Beantwortet von son_quatsch Experte (5.3k Punkte)
Das soll aufzeigen, dass die Formulierung Ich habe alles versucht nicht den geringsten Informationsgehalt für jeden Helfer hat, Marie.
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
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*
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
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
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
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
...