'entwickelt von Winfried Radner 'e-mail: Wolf.W.Radzinski@onlinehome.de 'Benutzung frei - ohne Gewähr >Gibt es fertige Formeln in Excel oder hat jemand ein Makro mit dem man >(DM) Betraege aus einer Zelle lesen und in einer anderen "In Worten" >ausgeben kann ? Es genuegt "zwei drei vier" mit ZWEI Formeln klappt es (eine Formel reicht leider nicht - ich glaube wegen der Schachtelungstiefe!) sei z.B. A1= 343567890 dann folgende FORMEL in A2 =WECHSELN(WECHSELN(WECHSELN(WECHSELN(WECHSELN(WECHSELN(WECHSELN(WECHSELN (A1;0;"Null ");1;"Eins ");2;"Zwei ");3;"Drei ");4;"Vier ");5;"Fünf ");6;"Sechs ");7;"Sieben ") und die restliche Formel in A3 (bezieht sich dann auf A2) =" * " & WECHSELN(WECHSELN(WECHSELN(A2;8;"Acht ");9;"Neun ");" ";" * ") Ergebnis in Zelle A3: * Drei * Vier * Drei * Fünf * Sechs * Sieben * Acht * Neun * Null * Erweiterung (Anpassung für Scheckeintrag)9.4.2002: ================================================== sei A1 = 3794,336 1.Formel: =WECHSELN(WECHSELN(WECHSELN(WECHSELN(WECHSELN(WECHSELN(WECHSELN(GANZZAHL(A1) ;0;"Null ");1;"Eins ");2;"Zwei ");3;"Drei ");4;"Vier ");5;"Fünf ");6;"Sechs ") 2.Formel: a) ohne Nachkommaanteil =WECHSELN(" *** " & WECHSELN(WECHSELN(WECHSELN(WECHSELN(A2;7;"Sieben ");8;"Acht ");9;"Neun ");" ";" * ") & "§";"* §";"***") Ergebnis = *** Drei * Sieben * Neun * Vier *** b) mit Nachkommaanteil =WECHSELN(" *** " & WECHSELN(WECHSELN(WECHSELN(WECHSELN(A2;7;"Sieben ");8;"Acht ");9;"Neun ");" ";" * ") & "§";"* §";"***") & WENN(REST(A1;1)>0;" und " & GANZZAHL(RUNDEN(REST(A1;1);2)*100) & "/100";"") Ergebnis = *** Drei * Sieben * Neun * Vier *** und 34/100 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> oder die folgende EINFACHE Function Function zahlwort(zelle As Range, Optional trenner = " ") As String zahlwort = CStr(zelle) With WorksheetFunction 'Tausendertrennung? zahlwort = .Substitute(zahlwort, ".", "") 'Minus und Komma? 'zahlwort = .Substitute(zahlwort, "-", "Minus") 'zahlwort = .Substitute(zahlwort, ",", "Komma") zahlwort = .Substitute(zahlwort, "1", "Eins§") zahlwort = .Substitute(zahlwort, "2", "Zwei§") zahlwort = .Substitute(zahlwort, "3", "Drei§") zahlwort = .Substitute(zahlwort, "4", "Vier§") zahlwort = .Substitute(zahlwort, "5", "Fünf§") zahlwort = .Substitute(zahlwort, "6", "Sechs§") zahlwort = .Substitute(zahlwort, "7", "Sieben§") zahlwort = .Substitute(zahlwort, "8", "Acht§") zahlwort = .Substitute(zahlwort, "9", "Neun§") zahlwort = .Substitute(zahlwort, "0", "Null§") zahlwort = .Substitute(zahlwort, "§", trenner) End With lt = Len(trenner) lz = Len(zahlwort) zahlwort = Left(zahlwort, lz - lt) End Function ODER AUCH mehrsprachig! UND mit Nachkommaanteil. Function zahlwort(zelle As Range, Optional trenner = " ", Optional nk = False, Optional sprache = "D") As String Const anzahl_felder = 2 Dim w(anzahl_felder - 1, 9) As String komma = "," zahlwort = CStr(zelle) If IsNull(trenner) Then trenner = " " If IsNull(nk) Then nk = False If nk Then komma_pos = InStr(1, zelle, komma) zahlwort = zelle zahlwort_nk = "" If komma_pos > 0 Then zahlwort_nk = Right(zelle, Len(zelle) - komma_pos) zahlwort = Left(zelle, komma_pos - 1) zaehler = Len(zahlwort_nk) - 2 zahlwort_nk = trenner & zahlwort_nk & "/100" Do While zaehler > 0 zahlwort_nk = zahlwort_nk & "0" zaehler = zaehler - 1 Loop End If End If 'deutsch w(0, 0) = "Null": w(0, 1) = "Eins": w(0, 2) = "Zwei" w(0, 3) = "Drei": w(0, 4) = "Vier": w(0, 5) = "Fünf" w(0, 6) = "Sechs": w(0, 7) = "Sieben": w(0, 8) = "Acht" w(0, 9) = "Neun" 'englisch w(1, 0) = "Zero": w(1, 1) = "One": w(1, 2) = "Two" w(1, 3) = "Three": w(1, 4) = "Four": w(1, 5) = "Five" w(1, 6) = "Six": w(1, 7) = "Seven": w(1, 8) = "Eight" w(1, 9) = "Nine" Select Case UCase(sprache): Case "D": i = 0 Case "GB", "US": i = 1 Case Else: i = 0 End Select With WorksheetFunction 'Tausendertrennung? 'zahlwort = .Substitute(zahlwort, ".", "TT") zahlwort = .Substitute(zahlwort, ".", "") 'Minuszeichen? 'zahlwort = .Substitute(zahlwort, "-", "Minus") zahlwort = .Substitute(zahlwort, "-", "- ") 'Komma? 'zahlwort = .Substitute(zahlwort, ",", "Komma") zahlwort = .Substitute(zahlwort, ",", "") zahlwort = .Substitute(zahlwort, "0", w(i, 0) & "§") zahlwort = .Substitute(zahlwort, "1", w(i, 1) & "§") zahlwort = .Substitute(zahlwort, "2", w(i, 2) & "§") zahlwort = .Substitute(zahlwort, "3", w(i, 3) & "§") zahlwort = .Substitute(zahlwort, "4", w(i, 4) & "§") zahlwort = .Substitute(zahlwort, "5", w(i, 5) & "§") zahlwort = .Substitute(zahlwort, "6", w(i, 6) & "§") zahlwort = .Substitute(zahlwort, "7", w(i, 7) & "§") zahlwort = .Substitute(zahlwort, "8", w(i, 8) & "§") zahlwort = .Substitute(zahlwort, "9", w(i, 9) & "§") zahlwort = .Substitute(zahlwort, "§", trenner) End With lt = Len(trenner) lz = Len(zahlwort) zahlwort = Left(zahlwort, lz - lt) & zahlwort_nk End Function ein Aufruf der Form =zahlwort(A1;" * ") ergibt dann Drei * Vier * Drei * Fünf * Sechs * Sieben * Acht * Neun * Null