Purzel Geschrieben 12. August 2003 Geschrieben 12. August 2003 Hallo zusammen, ich habe eine kleine Excel-Herausforderung: Werte die als Zahlen eingetragen werden, sollen in einer weiteren Spalte automatsche als Wort ausgegeben werden. Beispiel: der Wert 12,04 soll in der nächsten Spalte automatisch als eins-zwei,null-vier ausgegeben werden. Weiß jemand wie man das am einfachsten umsetzen kann? Liebe Grüße Purzel Zitieren
EvilNick Geschrieben 12. August 2003 Geschrieben 12. August 2003 Mit einer Excel-Formel wüßte ich da keine Lösung, aber mit einem kleinen VBA Makro in dem Stil (Achtung: Pseudo-Code) zahl = AktiveZelle.Text zahlwort = "" gehe von 1 bis Ende(zahl) select case zahl case 1 zahlwort = zahlwort & "eins-" case 2 zahlwort = zahlwort & "zwei-" ... ende select nächstes zeichen da du dann am Ende einen "-" zuviel hast, mußt du das letzte Zeichen noch per Right() abschneiden... und fertig! Zitieren
Purzel Geschrieben 12. August 2003 Autor Geschrieben 12. August 2003 Vielen lieben Dank, werds mal ausprobieren. Obwohl ich eigentlich ne Excel-Taugliche Lösung brauche... also, wenn noch jemandem was einfällt Zitieren
EvilNick Geschrieben 12. August 2003 Geschrieben 12. August 2003 Äh, was ist an VBA nicht Excel-tauglich? Oder wie meinst du das? Zitieren
Purzel Geschrieben 12. August 2003 Autor Geschrieben 12. August 2003 Oh Menno - ich wollt einfach nur ne schön einfache Formel. Diesen Programmierkrams kriegen wir hier nicht hin... Mein Kollege meinte schon ich soll mal dazu schreiben das ich blond bin und abwarten ob dann was besseres kommt Aber am schnellsten geht es wahrscheinlich die Werte einfach per Hand einzugeben... Zitieren
EvilNick Geschrieben 12. August 2003 Geschrieben 12. August 2003 Original geschrieben von Purzel Mein Kollege meinte schon ich soll mal dazu schreiben das ich blond bin und abwarten ob dann was besseres kommt Ach sag das doch... *g* Dann bin ich mal so frei... erstell in dem Excel-Sheet einen Button und füge dort als Quellcode folgendes ein: Dim zahl As String Dim zahlwort As String zahl = ActiveCell.Text zahlwort = "" For i = 1 To Len(zahl) Select Case Mid(zahl, i, 1) Case "1" zahlwort = zahlwort & "eins-" Case "2" zahlwort = zahlwort & "zwei-" Case "3" zahlwort = zahlwort & "drei-" Case "4" zahlwort = zahlwort & "vier-" Case "5" zahlwort = zahlwort & "fünf-" Case "6" zahlwort = zahlwort & "sechs-" Case "7" zahlwort = zahlwort & "sieben-" Case "8" zahlwort = zahlwort & "acht-" Case "9" zahlwort = zahlwort & "neun-" Case "0" zahlwort = zahlwort & "null-" Case "," zahlwort = Mid(zahlwort, 1, Len(zahlwort) - 1) zahlwort = zahlwort & "," End Select Next i zahlwort = Mid(zahlwort, 1, Len(zahlwort) - 1) ActiveSheet.Cells(ActiveCell.Row, ActiveCell.Column + 1) = zahlwort Die Zelle, die markiert ist (immer nur eine!) wenn du auf den Button drückst, wird dann in "Wörter" umgewandelt und dann in den Zelle rechts daneben geschrieben. Zitieren
Purzel Geschrieben 12. August 2003 Autor Geschrieben 12. August 2003 Wow - ich bin begeistert. Wobei die Haarfarbe einem so helfen kann Dann werden wir das jetzt mal schön ausprobieren. Danke, wirklich sehr nett von Dir!!! Zitieren
hmaas Geschrieben 12. August 2003 Geschrieben 12. August 2003 oder doch ohne VB? benötigte Formel: Zahl zu Text FEST(Zahl;Dezimalstellen;Keine_Punkte) Zahl = deine Zahl die wir Umwandeln wollen Dezimalstellen = Wieviele werden benötigt? Keine_Punkte = WAHR -> keine Tausendertrennpunkte Suchen & Ersetzen WECHSELN(Text;Alter_Text;Neuer_Text;Ntes_Auftreten) Text = Text der durchsucht wird Alter_Text = String, nach dem gesucht wird Neuer_Text = String, der eingefügt werden soll Ntes_Auftreten = für deinen Zweck uninteressant Da Excel maxmial sieben Verzweigungen innerhalb einer Formel zulässt, muss man leider zwei Formeln, in zwei verschiedenen Zellen verwenden. Die für den Zwischenschritt, kannst du ja dann ausblenden. Zelle A1: Inhalt: 123456789,00 Zelle A2: Formel: =WECHSELN(WECHSELN(WECHSELN(WECHSELN(WECHSELN(WECHSELN(WECHSELN(FEST(A1;2;WAHR);6;"SECHS-");5;"FÜNF-");4;"VIER-");3;"DREI-");2;"ZWEI-");1;"EINS-");0;"NULL-") Ergebniss: EINS-ZWEI-DREI-VIER-FÜNF-SECHS-789,NULL-NULL- Zelle A3: Formel: =WECHSELN(WECHSELN(WECHSELN(WECHSELN(A2;9;"NEUN-");8;"ACHT-");7;"SIEBEN-");"-,";",") Ergebniss: EINS-ZWEI-DREI-VIER-FÜNF-SECHS-SIEBEN-ACHT-NEUN,NULL-NULL- Wenn du das letzte Minus weg haben willst: Zelle A4: Formel: =LINKS(A3;LÄNGE(A3)-1) so denn dies die Lösung ohne VB. Gruß Pönk Zitieren
Purzel Geschrieben 12. August 2003 Autor Geschrieben 12. August 2003 Super - ihr seid echt meine Helden heute! Vielen lieben Dank. ich hoffe das ich das irgendwie hinbekomme (Der Button in Excel gestaltet sich nämlich schon schwierig!), aber das wird schon irgendwie. Hab ja relativ fähige Kollegen! Zitieren
V-Again Geschrieben 12. August 2003 Geschrieben 12. August 2003 Relativ einfach...smile Angenommen in Zelle B6 steht der Dezimalwert und die Ausgabe soll in B8 erfolgen, dann schreibe in B8 folgende Formel: =WENN(B6>=1000000000;"nur unter 1 Milliarde";WENN(B6<1;"null";WENN(B6<0;"minus ";"")&WENN(B13=0;"";C13)&WENN(UND(B14=0;B15=0);"";D14)&WENN(B16=0;"";C16)&WENN(UND(B17=0;B18=0);"";D17)&WENN(B19=0;"";C19)&WENN(UND(B20=0;B21=0);"";WENN(UND(B20=0;B21=1);"eins";D20))))&WENN(F19=0;"";H20) Wie oben ersiehst werden Werte von Zellen abgefragt, welche noch keine Werte enthalten, also B13 - B20, in diese Zellen trägst du folgende Funktionen ein(am Bsp. von B13) =WERT(RECHTS(GANZZAHL(ABS(B6)/100000000))) Hier wird also geprüft ob es an dieser Stelle der Zahl einen Wert gibt und anschließend in der Zelle C13 mit folgender Funktion in einer "Wortzahl" ausgeschrieben: =WENN(B13=1;"ein";WENN(B13=2;"zwei";WENN(B13=3;"drei";WENN(B13=4;"vier";WENN(B13=5;"fünf";WENN(B13=6;"sechs";WENN(B13=7;"sieben";WENN(B13=8;"acht";"neun"))))))))&"hundert"&WENN(UND(B14=0;B15=0);"millionen";"") Das Ganze wird nun mit den Zellen B14/C14 bis B21/C21 weitergeführt, dabei verringert sich die zu untersuchende Zahl jeweils um eine weitere 10er Potenz (also B13 mit 10000000, B14 mit 1000000 usw.) Bis jetzt ermittelst du mit diesen Funktionen erst die Wortzahlen v o r dem Komma....Für die Stellen danach ist noch einmal dergleiche Auffwand nötig....Wenn du magst schicke ich dir einmal das komplette Beispiel... Aber wie du siehst: Das Ganze hat bestimmt nix mit blond zu tun...grins Zitieren
Purzel Geschrieben 12. August 2003 Autor Geschrieben 12. August 2003 ....doch hat es wohl - ich hab von Deinem Beitrag nicht wirklich viel verstanden. Kann aber auch an der Uhrzeit liegen. Beispiel wäre Klasse! Kannst Du mir das bitte an meine E-Mail-Adresse schicken? Zitieren
V-Again Geschrieben 12. August 2003 Geschrieben 12. August 2003 Mache ich morgen, wenn ich wieder in der Firma bin, denn nun gehe ich erst mal an den See.... Liebe Grüße Zitieren
EvilNick Geschrieben 12. August 2003 Geschrieben 12. August 2003 @Purzel: Wenn du dazugeschrieben hättest, das du weiblich bist, wäre es schneller gegangen @All: Also wenn ich mir so die Formel ansehe... oh ne... dann lieber VBA, das geht schneller *g* Vor allem Blick ich da schneller den Code Zitieren
V-Again Geschrieben 12. August 2003 Geschrieben 12. August 2003 @EvilNick: tstsss.... Vorausgesetzt deine Abfrage funktioniert so (was ich mangels Verständnis nicht bewerten kann...smile) hast du natürlich recht..... Allerdings wollte Purzel das Problem ja mittels Funktionen angehen und dafür: :uli Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.