Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
644to648
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
644to648
644to648
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Zahlenfolge als Wörterfolge

Zahlenfolge als Wörterfolge
01.08.2005 11:01:36
Matthias
Hallo Excelgemeinschaft,
Ich habe wiedermal ein kleines Problem bei dem ich eure hilfe gebrauchen könnte und zwar geht es um Folgendes:
Auf einem sheet (Werte) steht in der zelle S32 folgende zahl 2.992.459.388,99 z.B nun mein problem ich möchte das die zahlenfolge in eine Wortfolge umgewandelt wird und in der zelle A33 mit folgenden Text kombiniert wir (in Worten)
als ergebniss soll es so aussehen
(in Worten zwei,neun,neun,zwei,vier,fünf,neun,drei,acht,acht)
die stellen nach dem komma sollen nicht mehr mit angegeben werden !
Hoffe es ist verständlich und bitte um eure hilfe
MFg Matthias

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zahlenfolge als Wörterfolge
01.08.2005 11:44:17
Heiko
Hallo Matthias,
schon mal mit UDF´s (User definierten Funktionen) gearbeitet? Dies wäre so eine.
Im VBA Editor in ein allgemeines Modul und dann wie eine normale Formel in EXCEL aufrufen. Also z.B. in Zelle B1 ZahlenInWorte(A1)
Es sind zwar noch nicht alle Fehlerfälle abgefangen und ob es auch ohne VBA geht kann ich dir nicht sagen, aber zumindest tut es das was du willst.
Public Function ZahlenInWorte(rngZelle As Range) As String Dim bytZiffer As Byte Dim lngi As Long Dim strhelp As String strhelp = "In Worten " For lngi = 1 To Len(rngZelle.Text) If IsNumeric(Mid(rngZelle.Text, lngi, 1)) Then bytZiffer = CByte(Mid(rngZelle.Text, lngi, 1)) Select Case bytZiffer Case 0: strhelp = strhelp & "Null" Case 1: strhelp = strhelp & "Eins" Case 2: strhelp = strhelp & "Zwei" Case 3: strhelp = strhelp & "Drei" Case 4: strhelp = strhelp & "Vier" Case 5: strhelp = strhelp & "Fünf" Case 6: strhelp = strhelp & "Sechs" Case 7: strhelp = strhelp & "Sieben" Case 8: strhelp = strhelp & "Acht" Case 9: strhelp = strhelp & "Neun" Case Else End Select strhelp = strhelp & ", " Else If Mid(rngZelle.Text, lngi, 1) = "," Then strhelp = Left(strhelp, Len(strhelp) - 2) Exit For End If End If Next lngi ZahlenInWorte = strhelp End Function
Gruß Heiko

PS: Rückmeldung wäre nett !
Anzeige
AW: Zahlenfolge als Wörterfolge
01.08.2005 12:44:36
Matthias
Kannst du mir etwas genauer beschreiben was ich jetzt machen soll irgentwie sehe ich nicht ganz durch
Ich habe jetzt in die Zelle A33 folgendes geschrieben ZahlenInWorte(s32)
auch habe ich den Quelltext in ein modul kopiert aber es passiert irgent wie nichts
In der zelle S32 Steht auch eine zahl 2.888.999.548.646 eigentlich müsste ja diese zahl in der Zelle A33 als wort erscheine (für jede Zahl ein wort)
MFg Matthias
AW: Zahlenfolge als Wörterfolge
01.08.2005 12:51:20
ede
hallo,
also bei mir funktionierte es super.
natürlich solltest du in der zelle =ZahleninWorte(s32) schreiben.
dann mal F9 für berechnen drücken, falls auf manuell gestellt sein sollte.
Anzeige
AW: Zahlenfolge als Wörterfolge
01.08.2005 12:56:34
Heiko
Hallo Matthias,
das sollte ganz einfach sein, in Zelle A33 das Gleichheitszeichen nicht vergessen, also:
=ZahlenInWorte(S32)
Gruß Heiko

PS: Rückmeldung wäre nett !
Das ganze noch ein bisschen flexibler.
01.08.2005 13:08:47
Heiko
Hallo Matthias,
hier das ganze noch ein bisschen flexibler.
' Funktion ZahlenInWorte,
' So DIS 01.08.05
' rngZelle : BezugsZelle, also wo kommen die Daten her.
' strStarttext : Soll den Zahlen in Worten noch ein StartText vorrangestellt werden,
' dann diesen hier angeben.
' strTrennzeichen : Soll die Umsetzung Zahlen in Worte an einer bestimmten Stelle abgebrochen
' werden, dann das Trennzeichen hier angeben.
' Aufruf z.B. so, Zahl in Zelle A1 = 1234567890,12; Formel in Zelle B1 = =ZahleninWorte(A2;;",")
' Ergebnis = Eins, Zwei, Drei, Vier, Fünf, Sechs, Sieben, Acht, Neun, Null
' Aufruf z.B. so, Zahl in Zelle A1 = 2992459388,99; Formel in Zelle B1 = =ZahleninWorte(A6;"In Worten")
' Ergebnis = In Worten Zwei, Neun, Neun, Zwei, Vier, Fünf, Neun, Drei, Acht, Acht, Neun, Neun,
Function ZahlenInWorte(rngZelle As Range, _ Optional strStarttext As String = "Default_String_!§$)(&%", _ Optional strTrennzeichen As String = "Default_String_!§$)(&%") As String Dim bytZiffer As Byte Dim lngi As Long Dim strhelp As String If strStarttext <> "Default_String_!§$)(&%" Then strhelp = "In Worten " If rngZelle.Text = "" Then Exit Function For lngi = 1 To Len(rngZelle.Text) If IsNumeric(Mid(rngZelle.Text, lngi, 1)) Then bytZiffer = CByte(Mid(rngZelle.Text, lngi, 1)) Select Case bytZiffer Case 0: strhelp = strhelp & "Null" Case 1: strhelp = strhelp & "Eins" Case 2: strhelp = strhelp & "Zwei" Case 3: strhelp = strhelp & "Drei" Case 4: strhelp = strhelp & "Vier" Case 5: strhelp = strhelp & "Fünf" Case 6: strhelp = strhelp & "Sechs" Case 7: strhelp = strhelp & "Sieben" Case 8: strhelp = strhelp & "Acht" Case 9: strhelp = strhelp & "Neun" End Select strhelp = strhelp & ", " Else If strTrennzeichen <> "Default_String_!§$)(&%" Then If Mid(rngZelle.Text, lngi, 1) = strTrennzeichen Then strhelp = Left(strhelp, Len(strhelp) - 2) Exit For End If End If End If Next lngi ZahlenInWorte = strhelp End Function
Gruß Heiko

PS: Rückmeldung wäre nett !
Anzeige
Das ganze noch ein bisschen flexibler und ohne Bug
01.08.2005 13:20:35
Heiko
Hallo
' Funktion ZahlenInWorte,
' So DIS 01.08.05
' rngZelle : BezugsZelle, also wo kommen die Daten her.
' strStartText : Soll den Zahlen in Worten noch ein StartText vorrangestellt werden,
' dann diesen hier angeben.
' strTrennzeichen : Soll die Umsetzung Zahlen in Worte an einer bestimmten Stelle abgebrochen
' werden, dann das Trennzeichen hier angeben.
' Aufruf z.B. so, Zahl in Zelle A1 = 1234567890,12; Formel in Zelle B1 = =ZahleninWorte(A2;;",")
' Ergebnis = Eins, Zwei, Drei, Vier, Fünf, Sechs, Sieben, Acht, Neun, Null
' Aufruf z.B. so, Zahl in Zelle A1 = 2992459388,99; Formel in Zelle B1 = =ZahleninWorte(A6;"In Worten")
' Ergebnis = In Worten Zwei, Neun, Neun, Zwei, Vier, Fünf, Neun, Drei, Acht, Acht, Neun, Neun,

Function ZahlenInWorte(rngZelle As Range, _
Optional strStartText As String = "Default_String_!§$)(&%", _
Optional strTrennzeichen As String = "Default_String_!§$)(&%") As String
Dim bytZiffer As Byte
Dim lngi As Long
Dim strhelp As String
If strStartText <> "Default_String_!§$)(&%" Then strhelp = strStartText & " "
If rngZelle.Text = "" Then Exit Function
For lngi = 1 To Len(rngZelle.Text)
If IsNumeric(Mid(rngZelle.Text, lngi, 1)) Then
bytZiffer = CByte(Mid(rngZelle.Text, lngi, 1))
Select Case bytZiffer
Case 0:
strhelp = strhelp & "Null"
Case 1:
strhelp = strhelp & "Eins"
Case 2:
strhelp = strhelp & "Zwei"
Case 3:
strhelp = strhelp & "Drei"
Case 4:
strhelp = strhelp & "Vier"
Case 5:
strhelp = strhelp & "Fünf"
Case 6:
strhelp = strhelp & "Sechs"
Case 7:
strhelp = strhelp & "Sieben"
Case 8:
strhelp = strhelp & "Acht"
Case 9:
strhelp = strhelp & "Neun"
End Select
strhelp = strhelp & ", "
Else
If strTrennzeichen <> "Default_String_!§$)(&%" Then
If Mid(rngZelle.Text, lngi, 1) = strTrennzeichen Then
Exit For
End If
End If
End If
Next lngi
strhelp = Left(strhelp, Len(strhelp) - 2)
ZahlenInWorte = strhelp
End Function

Gruß Heiko

PS: Rückmeldung wäre nett !
Anzeige
AW: Zahlenfolge als Wörterfolge
01.08.2005 14:54:53
MichaV
Hallo
Heikos Version ist immer noch ein bischen buggy, wenn in der Zelle nur Text steht. Außerdem noch nicht so richtig flexibel :-Þ
Hier mal ein ganz anderer Ansatz ohne Select und mit rekursiver Funktion:


      
Option Explicit
Function Wörter(Zelle, Trennzeichen) As String
'Ersetzt jede Ziffer in "Zelle" in ein Wort mit einem Trennzeichen dahinter,
'soweit die Ziffer nicht am Ende steht
'vorhandene Worte werden nicht verändert
'Unter Verwendung von =wörter(A1;", ") wird
'Aus Wort345Sechs7: Wort Drei, Vier, Fünf,Sechs Sieben
'Aus Wort: Wort
'Aus 345.345,45:Drei,  Vier,  Fünf,  Drei,  Vier,  Fünf, Komma Vier,  Fünf

Static Pos As Integer
Static Text As String
Dim a As String
If Pos = 0 Then 'erster Durchlauf
  Pos = 1
  
'Komma in "Komma" wandeln
  Zelle = WorksheetFunction.Substitute(Zelle, ",", "Komma")
  
'Punkte löschen
  Zelle = WorksheetFunction.Substitute(Zelle, ".", "")
End If
a = Mid(Zelle, Pos, 1)
If IsNumeric(a) Then
  Text = Text & Choose(a + 1, " Null", " Eins", " Zwei", " Drei", " Vier", " Fünf", " Sechs", " Sieben", " Acht", " Neun") & IIf(Pos = Len(Zelle), "", Trennzeichen)
  
If Pos = 1 Then Text = LTrim(Text)
Else
  Text = Text & a
End If
Pos = Pos + 1
If Not Pos > Len(Zelle) Then Text = Wörter(Zelle, Trennzeichen)
Wörter = Text
Text = ""
Pos = 0
End Function 


Gruss- Micha
PS: Rückmeldung wäre nett.
Anzeige
AW: Zahlenfolge als Wörterfolge
01.08.2005 16:13:14
Heiko
Hallo Micha,
jetzt hoffentlich ohne Buggy ;-)
Wobei ich Choose noch nicht kannte, Klasse Sache das.
Aber deine Funktion ist ja auch nicht ganz das macht was Matthias möchte. Wobei das könnte eigentlich nur Matthias bewerten, wenn er sich denn überhaupt noch für unsere Arbeit interessiert ?!
' Funktion ZahlenInWorte,
' So DIS 01.08.05
' rngZelle : BezugsZelle, also wo kommen die Daten her.
' strStartText : Soll den Zahlen in Worten noch ein StartText vorrangestellt werden,
' dann diesen hier angeben.
' strTrennzeichen : Soll die Umsetzung Zahlen in Worte an einer bestimmten Stelle abgebrochen
' werden, dann das Trennzeichen hier angeben.
' Wert Formel Ergebnis
' 1230,12 =ZahleninWorte(A1;;",") Eins, Zwei, Drei, Null, Eins, Zwei
' 298,99 =ZahleninWorte(A1;"In Worten") In Worten Zwei, Neun, Acht, Neun, Neun
' Auto =Zahleninworte(E16;;" ")
' 12Auto23,55 =Zahleninworte(E16;;",") Eins, Zwei, Zwei, Drei

Function ZahlenInWorte(rngZelle As Range, _
Optional strStartText As String = "Default_String_!§$)(&%", _
Optional strTrennzeichen As String = "Default_String_!§$)(&%") As String
Dim bytZiffer As Byte
Dim lngi As Long
Dim strHelp As String
If strStartText <> "Default_String_!§$)(&%" Then strHelp = strStartText & " "
For lngi = 1 To Len(rngZelle.Text)
If IsNumeric(Mid(rngZelle.Text, lngi, 1)) Then
bytZiffer = CByte(Mid(rngZelle.Text, lngi, 1))
strHelp = strHelp & Choose(bytZiffer + 1, "Null", "Eins", "Zwei", "Drei", _
"Vier", "Fünf", "Sechs", "Sieben", "Acht", "Neun")
strHelp = strHelp & ", "
Else
If strTrennzeichen <> "Default_String_!§$)(&%" Then
If Mid(rngZelle.Text, lngi, 1) = strTrennzeichen Then
Exit For
End If
End If
End If
Next lngi
If Len(strHelp) > 1 Then strHelp = Left(strHelp, Len(strHelp) - 2)
ZahlenInWorte = strHelp
End Function

Gruß Heiko

PS: Rückmeldung wäre nett !
Anzeige
AW: Zahlenfolge als Wörterfolge
02.08.2005 13:30:27
MichaV
Hallo Heiko,
da hast Du Recht, ich habe mir die Frage wiedermal nicht genau durchgelesen.
Hier meine überarbeitete Variante. Schade, daß sich Matthias nicht mehr gemeldet hat.


      
Option Explicit
Function Wörter(Zelle) As String
'die zahlenfolge in eine Wortfolge umgewandelt wird
'und ...mit folgenden Text kombiniert wird (in Worten)
'
'als ergebniss soll es so aussehen
'(in Worten zwei,neun,neun,zwei,vier,fünf,neun,drei,acht,acht)
'die stellen nach dem komma sollen nicht mehr mit angegeben werden !

Static Pos As Integer
Static Text As String
Dim a As String
Const Trennzeichen = ","
If Len(Zelle) = 0 Then Wörter = "": Exit Function
If Pos = 0 Then 'erster Durchlauf
  Pos = 1
  Text = "(In Worten:"
  
'Alles Hinter Komma löschen
  If InStr(Zelle, ",") > 0 Then
    Zelle = Left(Zelle, InStr(Zelle, ",") - 1)
  
End If
  
'Punkte löschen
  Zelle = WorksheetFunction.Substitute(Zelle, ".", "")
End If
a = Mid(Zelle, Pos, 1)
If IsNumeric(a) Then
  Text = Text & Choose(a + 1, "null", "eins", "zwei", "drei", "vier", "fünf", "sechs", "sieben", "acht", "neun") & IIf(Pos = Len(Zelle), "", Trennzeichen)
Else
  Text = Text & a
End If
Pos = Pos + 1
If Not Pos > Len(Zelle) Then
  Text = Wörter(Zelle)
Else
  Text = Text & ")"
End If
Wörter = Text
Text = ""
Pos = 0
End Function 


Gruss- Micha
Anzeige
AW: Zahlenfolge als Wörterfolge
01.08.2005 21:53:50
FP
Hallo Matthias,
per Formel geht das so:
Tabelle3
 AB
144.195.878.123.900,90vier,vier,eins,neun,fünf,acht,sieben,acht,eins,zwei,drei,neun,null,null
2  
3nullvier,vier,eins,neun,fünf,acht,sieben,acht,eins,zwei,drei,neun,null,null,
4einsvier,eins,neun,fünf,acht,sieben,acht,eins,zwei,drei,neun,null,null,
5zweieins,neun,fünf,acht,sieben,acht,eins,zwei,drei,neun,null,null,
6dreineun,fünf,acht,sieben,acht,eins,zwei,drei,neun,null,null,
7vierfünf,acht,sieben,acht,eins,zwei,drei,neun,null,null,
8fünfacht,sieben,acht,eins,zwei,drei,neun,null,null,
9sechssieben,acht,eins,zwei,drei,neun,null,null,
10siebenacht,eins,zwei,drei,neun,null,null,
11achteins,zwei,drei,neun,null,null,
12neunzwei,drei,neun,null,null,
13 drei,neun,null,null,
14 neun,null,null,
15 null,null,
16 null,
17  
Formeln der Tabelle
B1 : =WENN(A1="";"";LINKS(B3;LÄNGE(B3)-1))
B3 : =WENN(ZEILE(A1)>LÄNGE(KÜRZEN(A$1));"";INDEX(A$3:A$12;TEIL(A$1;ZEILE(A1);1)+1)&","&B4)
B4 : =WENN(ZEILE(A2)>LÄNGE(KÜRZEN(A$1));"";INDEX(A$3:A$12;TEIL(A$1;ZEILE(A2);1)+1)&","&B5)
B5 : =WENN(ZEILE(A3)>LÄNGE(KÜRZEN(A$1));"";INDEX(A$3:A$12;TEIL(A$1;ZEILE(A3);1)+1)&","&B6)
B6 : =WENN(ZEILE(A4)>LÄNGE(KÜRZEN(A$1));"";INDEX(A$3:A$12;TEIL(A$1;ZEILE(A4);1)+1)&","&B7)
B7 : =WENN(ZEILE(A5)>LÄNGE(KÜRZEN(A$1));"";INDEX(A$3:A$12;TEIL(A$1;ZEILE(A5);1)+1)&","&B8)
B8 : =WENN(ZEILE(A6)>LÄNGE(KÜRZEN(A$1));"";INDEX(A$3:A$12;TEIL(A$1;ZEILE(A6);1)+1)&","&B9)
B9 : =WENN(ZEILE(A7)>LÄNGE(KÜRZEN(A$1));"";INDEX(A$3:A$12;TEIL(A$1;ZEILE(A7);1)+1)&","&B10)
B10 : =WENN(ZEILE(A8)>LÄNGE(KÜRZEN(A$1));"";INDEX(A$3:A$12;TEIL(A$1;ZEILE(A8);1)+1)&","&B11)
B11 : =WENN(ZEILE(A9)>LÄNGE(KÜRZEN(A$1));"";INDEX(A$3:A$12;TEIL(A$1;ZEILE(A9);1)+1)&","&B12)
B12 : =WENN(ZEILE(A10)>LÄNGE(KÜRZEN(A$1));"";INDEX(A$3:A$12;TEIL(A$1;ZEILE(A10);1)+1)&","&B13)
B13 : =WENN(ZEILE(A11)>LÄNGE(KÜRZEN(A$1));"";INDEX(A$3:A$12;TEIL(A$1;ZEILE(A11);1)+1)&","&B14)
B14 : =WENN(ZEILE(A12)>LÄNGE(KÜRZEN(A$1));"";INDEX(A$3:A$12;TEIL(A$1;ZEILE(A12);1)+1)&","&B15)
B15 : =WENN(ZEILE(A13)>LÄNGE(KÜRZEN(A$1));"";INDEX(A$3:A$12;TEIL(A$1;ZEILE(A13);1)+1)&","&B16)
B16 : =WENN(ZEILE(A14)>LÄNGE(KÜRZEN(A$1));"";INDEX(A$3:A$12;TEIL(A$1;ZEILE(A14);1)+1)&","&B17)
B17 : =WENN(ZEILE(A15)>LÄNGE(KÜRZEN(A$1));"";INDEX(A$3:A$12;TEIL(A$1;ZEILE(A15);1)+1)&","&B18)
 
Diagramm - Grafik - Excel Tabellen einfach im Web darstellen    Excel Jeanie HTML  3.0    Download  
Servus aus dem Salzkammergut
Franz
Anzeige
AW: Zahlenfolge als Wörterfolge
02.08.2005 00:49:18
Erich
Hallo Matthias,
und noch eine Formel-Variante:
_|__________A___________|____________________________________B____________________________________|
1| 44.195.878.123.900,90|vier,vier,eins,neun,fünf,acht,sieben,acht,eins,zwei,drei,neun,null,null |
2| |vier,vier,eins,neun,fünf,acht,sieben,acht,eins,zwei,drei,neun,null,null, |
3| |vier,vier,eins,95878eins,zwei,drei,9null,null, |
Benutzte Formeln:
B1: =LINKS(B2;LÄNGE(B2)-1)
B2: =WECHSELN(WECHSELN(WECHSELN(WECHSELN(WECHSELN(B$3;5;"fünf,");6;"sechs,");7;"sieben,");8;"acht,");9;"neun,")
B3: =WECHSELN(WECHSELN(WECHSELN(WECHSELN(WECHSELN(ABRUNDEN(A$1;0);0;"null,");1;"eins,");2;"zwei,");3;"drei,");4;"vier,")

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Zahlenfolge als Wörterfolge
02.08.2005 06:06:33
Erich
Hallo
... und als Zweizeiler, ohne und mit Nachkommastellen:
_|___________A___________|_________________________________________B__________________________________________|
1|mit Abrunden auf Ganz: | |
2| 44.195.878.123.900,90|vier,vier,eins,neun,fünf,acht,sieben,acht,eins,zwei,drei,neun,null,null |
3| |vier,vier,eins,95878eins,zwei,drei,9null,null,x |
4|mit Komma: | |
5| 12345678,9012345|eins,zwei,drei,vier,fünf,sechs,sieben,acht,komma,neun,null,eins,zwei,drei,vier,fünf |
6| |eins,zwei,drei,vier,5678komma,9null,eins,zwei,drei,vier,5x |
Benutzte Formeln:
B2:=WECHSELN(WECHSELN(WECHSELN(WECHSELN(WECHSELN(WECHSELN(B3;5;"fünf,");6;"sechs,");7;"sieben,");8;"acht,");9;"neun,");",x";"")
B3:=WECHSELN(WECHSELN(WECHSELN(WECHSELN(WECHSELN(ABRUNDEN(A2;0);0;"null,");1;"eins,");2;"zwei,");3;"drei,");4;"vier,")&"x"
B5:=WECHSELN(WECHSELN(WECHSELN(WECHSELN(WECHSELN(WECHSELN(B6;5;"fünf,");6;"sechs,");7;"sieben,");8;"acht,");9;"neun,");",x";"")
B6:=WECHSELN(WECHSELN(WECHSELN(WECHSELN(WECHSELN(WECHSELN(A5;",";"komma,");0;"null,");1;"eins,");2;"zwei,");3;"drei,");4;"vier,")&"x"

Grüße von Erich aus Kamp-Lintfort

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige