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.
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 )
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