Ganze Zahl in Excel in Text umwandeln

Ich habe zum Beispiel eine Überweisung und soll eine ganze Zahl z.B 1.580 Euro im Formular als Text auswerfen.
Ergebnis wäre im Beispiel „eintausendfünfhundertachtzig“
Kann man dies mit einem kleinen Macro ausführen lassen ?

Hallo, schau mal hier: http://www.gartendatenbank.de/forum/excel-text-in-za…
Gruß
Mario

Ich habe zum Beispiel eine Überweisung und soll eine ganze
Zahl z.B 1.580 Euro im Formular als Text auswerfen.
Ergebnis wäre im Beispiel „eintausendfünfhundertachtzig“
Kann man dies mit einem kleinen Macro ausführen lassen ?

da gibt es ein Add-In bei Smart-Tools:

http://www.add-in-world.com/katalog/xl-zahlinworten/

Habe ich schon selber ausprobiert. Funktioniert gut.

Gruß Jürgen

Hallo,
ich habe da was gefunden was glaube ich genau das macht was du willst.
http://www.donkarl.com/FAQ/FAQ2Allgemein.htm#2.11

Gruß
Thomas

Kann man dies mit einem kleinen Macro ausführen lassen ?

Hallo echojuergen,
tut mir leid, kann nicht weiterhelfen, habe mich bei wer-weiss-was als Excel-Experte OHNE VBA angemeldet!
Viel Glück
Holdrio

Keine Ahnung ob das geht, allerdings würde ich vom Gebrauch von Macros abraten.

Versuchs mal damit! ( nicht von mir und nicht getestet!

Kopiere den folgenden Code in ein allg. Modul (A2, A95 oder A97).
(Der idente Code in der dt. MS-KB ist übrigens von mir, nicht umgekehrt. :wink:
Aufruf mit: FctZahl_In_Worten(4321)

'*********** CODE START *************
Public Function FctZahl_In_Worten(Zahl As Double)
  'wandelt Zahlen im Bereich 0-999.999.999 in Worte um
  'von Karl Donaubauer

  Dim z As String, w As String
  Dim r As Integer, i As Integer

  z = Int(Zahl)
  If z = 0 Then FctZahl_In_Worten = „null“: Exit Function

  For i = 6 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 9 And r 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

  FctZahl_In_Worten = 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
'*********** CODE ENDE *************

Und hier noch eine Version

Public Function BetragInWorten(ByVal Betrag As Double) _
As String
 
Dim sBetrag As String
Dim I As Integer
Dim Gruppe As String
ReDim tmp1(3) As String
ReDim tmp2(3) As String
ReDim Grp(4) As String
 
If Betrag = 0 Then
BetragInWorten = „null“
Else
tmp1(1) = „einemilliarde“: tmp2(1) = „milliarden“
tmp1(2) = „einemillion“: tmp2(2) = „millionen“
tmp1(3) = „eintausend“: tmp2(3) = „tausend“
 
sBetrag = LTrim$(Str$(Betrag))
sBetrag = String$(12 - Len(sBetrag), „0“) + sBetrag
For I = 1 To 4
Gruppe = Mid$(sBetrag, (I - 1) * 3 + 1, 3)
If Gruppe „000“ Then
If I 4 Then
If Gruppe = „001“ Then
Grp(I) = tmp1(I)
Else
Grp(I) = GetGruppe(Gruppe) + tmp2(I)
End If
Else
Grp(I) = GetGruppe(Gruppe)
End If
End If
Next I
BetragInWorten = Grp(1) + Grp(2) + Grp(3) + Grp(4)
End If
End Function
 
’ Die nachfolgende Funktion wird von der Hauptfunktion
’ aufgerufen
Private Function GetGruppe(ByVal Gruppe As String) As String
 
’ Dreiergruppen in Worten zusammenfassen
 
Dim Hunderter As String
Dim Zehner As String
Dim Einer As String
 
’ Hunderterstellen
If Val(Mid$(Gruppe, 1, 1)) > 0 Then
If Mid$(Gruppe, 1, 1) = „1“ Then
Hunderter = „einhundert“
Else
Hunderter = Choose(Val(Mid$(Gruppe, 1, 1)) + 1, „null“, _
„eins“, „zwei“, „drei“, „vier“, „fünf“, „sechs“, _
„sieben“, „acht“, „neun“) + „hundert“
End If
End If
 
’ Zehnerstellen
If Val(Right$(Gruppe, 2)) >= 10 And _
Val(Right$(Gruppe, 2)) 1 Then
Zehner = Choose(Val(Mid$(Gruppe, 2, 1)) - 1, „zwanzig“, _
„dreißig“, „vierzig“, „fünfzig“, „sechzig“, „siebzig“, _
„achtzig“, „neunzig“)
End If
If Val(Mid$(Gruppe, 3, 1)) > 0 Then
’ Einerstellen
If Zehner = „“ Then
Einer = Choose(Val(Mid$(Gruppe, 3, 1)) + 1, „null“, _
„eins“, „zwei“, „drei“, „vier“, „fünf“, „sechs“, _
„sieben“, „acht“, „neun“)
Else
If Mid$(Gruppe, 3, 1) = „1“ Then
Einer = „einund“
Else
Einer = Choose(Val(Mid$(Gruppe, 3, 1)) + 1, „null“, _
„eins“, „zwei“, „drei“, „vier“, „fünf“, „sechs“, _
„sieben“, „acht“, „neun“) + „und“
End If
End If
End If
End If
 
GetGruppe = Hunderter + Einer + Zehner
End Function

Moin moin,
es geht bestimmt. Leider bin ich noch tief im MaKRO drin um Dir helfen zu konnen.

Mir ist keine fertige Lösung dafür bekannt. Aber es sollte nicht allzu schwierig sein, dafür ein Makro zu schreiben. Man muss halt die Zahl in die einzelnen Stellen zerlegen und dann die richtigen Bezeichnungen zuordnen, z.B. aus einem Text-Array. Im Deutschen muss man dann noch Einer- und Zehnerstelle vertauschen und auf „elf“ und „zwölf“ aufpassen…

Hallo,

wenn ich in Excel eine Zahl „als Text“ formatiere, dann steht einfach nur die Zahl da und kann z. B. in einer Summe nicht mehr berechnet werden (es sei denn, man weist Excel dazu an, alles, was wie eine Zahl ‚aussieht‘, auch so zu behandeln.

Das Excel selbstständig eine Zahl in Textform schreiben könnte, wäre mir neu. Tut mir leid, das ist mir leider noch nicht untergekommen.

Aber versuch es einmal auf diesr Seite: www.gidf.de und gib dort ein „In Excel 2010 eine Zahl in Worte umwandeln“, dann kommt sicherlich auch diese Lösung, die ich gefunden habe: http://www.gartendatenbank.de/forum/excel-zahl-in-wo…

Gruß
Cornelia

P.S.: Der erste Link ist wirklich freundschaftlich gemeint… hilft mir extrem oft und viel weiter, der zweite Link ist eine ernsthafte Lösung

Tut mir leid. In dem Fall habe ich keine Erfahrung. Aber ich denke es sollte gehen.
Grüße
MW

Hallo Jürgen,

wegen der Besonderheiten bei den deutschen Zahlwörtern ist es kein kleines Makro.

Den Code fügst du in einem allgemeinen Modul deiner Datei ein. Dann kannst du die Function wie eine Tabellenfunktion benutzen oder auch innerhalb von anderen Prozeduren aufrufen.

Gruß
Franz

Function Zahl\_zu\_Text(Zahl As String) As String
 Dim sZahl As String
 Dim Position As Integer, Laenge As Integer, i1000 As Integer
 'Trennzeichen entfernen
 Zahl = VBA.Replace(Zahl, ".", "")
 Zahl = VBA.Replace(Zahl, ",", "")
 Zahl = VBA.Replace(Zahl, " ", "")
 Zahl = VBA.Replace(Zahl, "'", "")
 Laenge = Len(Zahl)
 i1000 = 0
 'Ziffern von rechts nach links abarbeiten
 For Position = Laenge To 1 Step -1
 sZahl = ""
 Do
 sZahl = Mid(Zahl, Position, 1) & sZahl
 If Len(sZahl) = 3 Then Exit Do
 Position = Position - 1
 If Position = 0 Then Exit Do
 Loop
 Zahl\_zu\_Text = Ergebnis(sZahl, i1000, Laenge) & Zahl\_zu\_Text
 i1000 = i1000 + 1
 Next Position
End Function

Private Function Ergebnis(sText As String, i1000er As Integer, Stellen) As String
 'Zahlen von 0 bis 999 in Text umsetzen
 Dim l\_100 As Long, l\_10 As Long, l\_1 As Long
 sText = Format(CLng(sText), "000")
 l\_100 = CLng(Left(sText, 1))
 l\_10 = CLng(Mid(sText, 2, 1))
 l\_1 = CLng(Right(sText, 1))
 '100er-Text
 Select Case l\_100
 Case 0: Ergebnis = ""
 Case 1: Ergebnis = "einhundert"
 Case 2: Ergebnis = "zweihundert"
 Case 3: Ergebnis = "dreihundert"
 Case 4: Ergebnis = "vierhundert"
 Case 5: Ergebnis = "fünfhundert"
 Case 6: Ergebnis = "sechshundert"
 Case 7: Ergebnis = "siebenhundert"
 Case 8: Ergebnis = "achthundert"
 Case 9: Ergebnis = "neunhundert"
 End Select

 Select Case l\_10
 Case 0 '01 bis 09
 If Stellen = 1 Then '1-stellige Zahlen 0 bis 9
 Select Case l\_1
 Case 0: Ergebnis = "null"
 Case 1: Ergebnis = "eins"
 Case 2: Ergebnis = "zwei"
 Case 3: Ergebnis = "drei"
 Case 4: Ergebnis = "vier"
 Case 5: Ergebnis = "fünf"
 Case 6: Ergebnis = "sechs"
 Case 7: Ergebnis = "sieben"
 Case 8: Ergebnis = "acht"
 Case 9: Ergebnis = "neun"
 End Select
 Else
 Select Case l\_1
 Case 0
 'Zahlen wie 100 bis 900
 Case 1
 If l\_100 = 0 Then
 'Zahl wie 001
 Select Case i1000er
 Case 0
 If Stellen \> 3 Then Ergebnis = Ergebnis & "undeins"
 Case 1: Ergebnis = Ergebnis & "ein" 'tausend
 Case 2: Ergebnis = Ergebnis & "eine" 'million
 Case 3: Ergebnis = Ergebnis & "eine" 'milliarde
 End Select
 Else
 'Zahlen wie 101 bis 901
 Ergebnis = Ergebnis & "eins"
 End If
 Case 2: Ergebnis = Ergebnis & "zwei"
 Case 3: Ergebnis = Ergebnis & "drei"
 Case 4: Ergebnis = Ergebnis & "vier"
 Case 5: Ergebnis = Ergebnis & "fünf"
 Case 6: Ergebnis = Ergebnis & "sechs"
 Case 7: Ergebnis = Ergebnis & "sieben"
 Case 8: Ergebnis = Ergebnis & "acht"
 Case 9: Ergebnis = Ergebnis & "neun"
 End Select
 End If
 Case 1 '10 bis 19
 Select Case l\_1
 Case 0: Ergebnis = Ergebnis & "zehn"
 Case 1: Ergebnis = Ergebnis & "elf"
 Case 2: Ergebnis = Ergebnis & "zwölf"
 Case 3: Ergebnis = Ergebnis & "dreizehn"
 Case 4: Ergebnis = Ergebnis & "vierzehn"
 Case 5: Ergebnis = Ergebnis & "fünfzehn"
 Case 6: Ergebnis = Ergebnis & "sechzehn"
 Case 7: Ergebnis = Ergebnis & "siebzehn"
 Case 8: Ergebnis = Ergebnis & "achtzehn"
 Case 9: Ergebnis = Ergebnis & "neunzehn"
 End Select
 Case 2 To 9 ' 20 bis 99
 'anfügen Text für letzte Ziffer
 Select Case l\_1
 Case 0
 Case 1: Ergebnis = Ergebnis & "einund"
 Case 2: Ergebnis = Ergebnis & "zweiund"
 Case 3: Ergebnis = Ergebnis & "dreiund"
 Case 4: Ergebnis = Ergebnis & "vierund"
 Case 5: Ergebnis = Ergebnis & "fünfund"
 Case 6: Ergebnis = Ergebnis & "sechsund"
 Case 7: Ergebnis = Ergebnis & "siebenund"
 Case 8: Ergebnis = Ergebnis & "achtund"
 Case 9: Ergebnis = Ergebnis & "neunund"
 End Select
 'anfügen Text für 10er-Ziffer
 Select Case l\_10
 Case 2: Ergebnis = Ergebnis & "zwanzig"
 Case 3: Ergebnis = Ergebnis & "dreißig"
 Case 4: Ergebnis = Ergebnis & "vierzig"
 Case 5: Ergebnis = Ergebnis & "fünfzig"
 Case 6: Ergebnis = Ergebnis & "sechzig"
 Case 7: Ergebnis = Ergebnis & "siebzig"
 Case 8: Ergebnis = Ergebnis & "achtzig"
 Case 9: Ergebnis = Ergebnis & "neunzig"
 End Select
 End Select 'Case l\_10
 If CLng(sText) \> 0 Then
 Select Case i1000er
 Case 0
 Case 1: Ergebnis = Ergebnis & "tausend"
 Case 2: Ergebnis = Ergebnis & "million" & IIf(l\_1 = 1, "", "en")
 Case 3: Ergebnis = Ergebnis & "milliarde" & IIf(l\_1 = 1, "", "n")
 End Select
 End If
End Function

Tut mir leid, da kann ich nicht helfen. LG

Hallo Echojürgen,

Google ist Dein Freund :smile:)

Schau mal hier:
http://www.pctipp.ch/praxishilfe/kummerkasten/office…

oder hier:

http://www.excelformeln.de/tips.html?welcher=36

Ich hoffe, das hilft Dir weiter.

Viele Grüße
Alex

siehe http://www.office-loesung.de/ftopic159619_0_0_asc.ph…,
3. Posting

Ich habe zum Beispiel eine Überweisung und soll eine ganze
Zahl z.B 1.580 Euro im Formular als Text auswerfen.

Da müsstest du selber eine Routine schreiben, die das auswertet. sollte wohl auch schwierig sein.

vielleicht so:

Len(Wert) --> Gibt die Anzahl der Stellen zurück

und dann stelle für stelle durchgehen und den String zusammenbasteln

Lg
OVM