von komma4 » Mi, 27.02.2008 09:30
venom30 hat geschrieben:aber kann es sein das open office calc kein englisch kann?
Nein, Calc kann kein Englisch.
Calc kann dementsprechend aber auch kein Deutsch.
Du suchst eine Funktion "Zahl zu Wort", die nicht eingebaut ist.
Für die Ausgabe in Englisch brauchst Du eine benutzerdefinierte Funktion.
Andrew hat in seinem Makrodokument eine Routine dafür (Code in die
STANDARD-Bibliothek von "Meine Makros" einfügen).
Code: Alles auswählen
Function NumberToText(ByVal n) As String
REM by Andrew D. Pitonyak
Dim sBigWordsUSA()
Dim sBigWordsUK()
Dim sBigWordsDE()
REM 10^100 is a googol (10 duotrigintillion)
REM This goes to 10^303, how big do you really want me to go?
sBigWordsUSA = Array( "", _
"thousand", "million", "billion", "trillion", "quadrillion", _
"quintillion", "sexillion", "septillion", _
"octillion", "nonillion", "decillion", "undecillion", "duodecillion", _
"tredecillion","quattuordecillion", "quindecillion", "sexdecillion", _
"septdecillion", "octodecillion", "novemdecillion", "vigintillion", _
"unvigintillion", "duovigintillion", "trevigintillion", _
"quattuorvigintillion", "quinvigintillion", "sexvigintillion", _
"septvigintillion", "octovigintillion", "novemvigintillion", _
"trigintillion", "untrigintillion", "duotrigintillion", _
"tretrigintillion", "quattuortrigintillion", "quintrigintillion", _
"sextrigintillion", "septtrigintillion", "octotrigintillion", _
"novemtrigintillion", "quadragintillion", "unquadragintillion", _
"duoquadragintillion", "trequadragintillion", _
"quattuorquadragintillion", _
"quinquadragintillion", "sexquadragintillion", "septquadragintillion", _
"octoquadragintillion", "novemquadragintillion", "quinquagintillion", _
"unquinquagintillion", "duoquinquagintillion", "trequinquagintillion", _
"quattuorquinquagintillion", "quinquinquagintillion", _
"sexquinquagintillion", "septquinquagintillion", _
"octoquinquagintillion", _
"novemquinquagintillion", "sexagintillion", "unsexagintillion", _
"duosexagintillion", "tresexagintillion", "quattuorsexagintillion", _
"quinsexagintillion", "sexsexagintillion", "septsexagintillion", _
"octosexagintillion", "novemsexagintillion", "septuagintillion", _
"unseptuagintillion", "duoseptuagintillion", "treseptuagintillion", _
"quattuorseptuagintillion", "quinseptuagintillion", _
"sexseptuagintillion", _
"septseptuagintillion", "octoseptuagintillion", "novemseptuagintillion", _
"octogintillion", "unoctogintillion", "duooctogintillion", _
"treoctogintillion", "quattuoroctogintillion", "quinoctogintillion", _
"sexoctogintillion", "septoctogintillion", "octooctogintillion", _
"novemoctogintillion", "nonagintillion", "unnonagintillion", _
"duononagintillion", "trenonagintillion", "quattuornonagintillion", _
"quinnonagintillion", "sexnonagintillion", "septnonagintillion", _
"octononagintillion", "novemnonagintillion", "centillion" _
)
sBigWordsUK() = Array( "", "thousand", _
"milliard", "billion", "billiard", "trillion", "trilliard", _
"quadrillion", "quadrilliard", "quintillion", "quintilliard", _
"sextillion", "sextilliard", "septillion", "septilliard", _
"octillion", "octilliard", "nonillion", "nonilliard", "decillion", _
"decilliard", "undecillion", "undecilliard", "dodecillion", _
"dodecilliard", "tredecillion", "tredecilliard", "quattuordecillion", _
"quattuordecilliard", "quindecillion", "quindecilliard", "sexdecillion", _
"sexdecilliard", "septendecillion", "septendecilliard", "octodecillion", _
"octodecilliard", "novemdecillion", "novemdecilliard", "vigintillion", _
"vigintilliard", "unvigintillion", "unvigintilliard", "duovigintillion", _
"duovigintilliard", "trevigintillion", "trevigintilliard", _
"quattuorvigintillion", "quattuorvigintilliard", "quinvigintillion", _
"quinvigintilliard", "sexvigintillion", "sexvigintilliard", _
"septenvigintillion", "septenvigintilliard", "octovigintillion", _
"octovigintilliard", "novemvigintillion", "novemvigintilliard", _
"trigintillion", "trigintilliard", "untrigintillion", _
"untrigintilliard", "duotrigintillion", "duotrigintilliard", _
"tretrigintillion", "tretrigintilliard", "quattuortrigintillion", _
"quattuortrigintilliard", "quintrigintillion", "quintrigintilliard", _
"sextrigintillion", "sextrigintilliard", "septentrigintillion", _
"septentrigintilliard", "octotrigintillion", "octotrigintilliard", _
"novemtrigintillion", "novemtrigintilliard", "quadragintillion", _
"quadragintilliard", "unquadragintillion", "unquadragintilliard", _
"duoquadragintillion", "duoquadragintilliard", "trequadragintillion", _
"trequadragintilliard", "quattuorquadragintillion", _
"quattuorquadragintilliard", "quinquadragintillion", _
"quinquadragintilliard", "sexquadragintillion", "sexquadragintilliard", _
"septenquadragintillion", "septenquadragintilliard", _
"octoquadragintillion", "octoquadragintilliard", _
"novemquadragintillion", "novemquadragintilliard", "quinquagintillion", _
"quinquagintilliard" _
)
sBigWordsDE() = Array( "", "Tausand", _
"Milliarde", "Billion", "Billiarde", "Trillion", "Trilliarde", _
"Quadrillion", "Quadrilliarde", "Quintillion", "Quintilliarde", _
"Sextillion", "Sextilliarde", "Septillion", "Septilliarde", _
"Oktillion", "Oktilliarde", "Nonillion", "Nonilliarde", _
"Dezillion", "Dezilliarde", "Undezillion", "Undezilliarde", _
"Duodezillion", "Doudezilliarde", "Tredezillion", _
"Tredizilliarde", "Quattuordezillion", "Quattuordezilliarde", _
"Quindezillion", "Quindezilliarde", "Sexdezillion", _
"Sexdezilliarde", "Septendezillion", "Septendezilliarde", _
"Oktodezillion", "Oktodezilliarde", "Novemdezillion", _
"Novemdezilliarde", "Vigintillion", "Vigintilliarde", _
"Unvigintillion", "Unvigintilliarde", "Duovigintillion", _
"Duovigintilliarde", "Trevigintillion", "Trevigintilliarde", _
"Quattuorvigintillion", "Quattuorvigintilliarde", "Quinvigintillion", _
"Quinvigintilliarde", "Sexvigintillion", "Sexvigintilliarde", _
"Septenvigintillion", "Septenvigintilliarde", "Oktovigintillion", _
"Oktovigintilliarde", "Novemvigintillion", "Novemvigintilliarde", _
"Trigintillion", "Trigintilliarde", "Untrigintillion", _
"Untrigintilliarde", "Duotrigintillion", "Duotrigintilliarde", _
"Tretrigintillion", "Tretrigintilliarde", "Quattuortrigintillion", _
"Quattuortrigintilliarde", "Quintrigintillion", "Quintrigintilliarde", _
"Sextrigintillion", "Sextrigintilliarde", "Septentrigintillion", _
"Septentrigintilliarde", "Oktotrigintillion", "Oktotrigintilliarde", _
"Novemtrigintillion", "Novemtrigintilliarde", "Quadragintillion", _
"Quadragintilliarde", "Unquadragintillion", "Unquadragintilliarde", _
"Duoquadragintillion", "Duoquadragintilliarde", "Trequadragintillion", _
"Trequadragintilliarde", "Quattuorquadragintillion", _
"Quattuorquadragintilliarde", "Quinquadragintillion", _
"Quinquadragintilliarde", "Sexquadragintillion", _
"Sexquadragintilliarde", "Septenquadragintillion", _
"Septenquadragintilliarde", "Oktoquadragintillion", _
"Oktoquadragintilliarde", "Novemquadragintillion", _
"Novemquadragintilliarde", "Quinquagintillion", "Quinquagintilliarde" _
)
Dim i As Integer
Dim iInt As Integer
Dim s As String
Dim dInt As Double
REM Chop off the decimal portion.
dInt = Fix(n)
If (dInt < 1000) Then
NumberToText = SmallIntToText(CInt(dInt))
Exit Function
End If
REM i is the index into the sBigWords array
i = 0
s = ""
Do While dInt > 0
iInt = CInt(dInt - Fix(dInt / 1000) * 1000)
If iInt <> 0 Then
If Len(s) > 0 Then s = " " & s
s = SmallIntToText(iInt) & " " & sBigWordsUSA(i) & s
End If
i = i + 1
dInt = Fix(dInt / 1000)
'Print "s = " & s & " dInt = " & dInt
Loop
NumberToText = s
End Function
Meine Version für die Ausgabe in Deutsch:
Funktion ZahlWort
Diese (benutzerdefinierte) Funktion übersetzt den nummerischen Wert eines Zellbezugs:
Wenn in der Zelle A1 der Wert 1234,56 steht, so ergibt die Formel =ZahlWort( A1 ) in einer anderen Zelle eingegeben, die Anzeige: eintausendzweihundertvierunddreißig 56/00
[quote="venom30"]aber kann es sein das open office calc kein englisch kann?[/quote]
Nein, Calc kann kein Englisch.
Calc kann dementsprechend aber auch kein Deutsch.
Du suchst eine Funktion "Zahl zu Wort", die nicht eingebaut ist.
Für die Ausgabe in Englisch brauchst Du eine benutzerdefinierte Funktion. [url=http://www.pitonyak.org]Andrew[/url] hat in seinem Makrodokument eine Routine dafür (Code in die [color=#008000]STANDARD[/color]-Bibliothek von "Meine Makros" einfügen).
[code]Function NumberToText(ByVal n) As String
REM by Andrew D. Pitonyak
Dim sBigWordsUSA()
Dim sBigWordsUK()
Dim sBigWordsDE()
REM 10^100 is a googol (10 duotrigintillion)
REM This goes to 10^303, how big do you really want me to go?
sBigWordsUSA = Array( "", _
"thousand", "million", "billion", "trillion", "quadrillion", _
"quintillion", "sexillion", "septillion", _
"octillion", "nonillion", "decillion", "undecillion", "duodecillion", _
"tredecillion","quattuordecillion", "quindecillion", "sexdecillion", _
"septdecillion", "octodecillion", "novemdecillion", "vigintillion", _
"unvigintillion", "duovigintillion", "trevigintillion", _
"quattuorvigintillion", "quinvigintillion", "sexvigintillion", _
"septvigintillion", "octovigintillion", "novemvigintillion", _
"trigintillion", "untrigintillion", "duotrigintillion", _
"tretrigintillion", "quattuortrigintillion", "quintrigintillion", _
"sextrigintillion", "septtrigintillion", "octotrigintillion", _
"novemtrigintillion", "quadragintillion", "unquadragintillion", _
"duoquadragintillion", "trequadragintillion", _
"quattuorquadragintillion", _
"quinquadragintillion", "sexquadragintillion", "septquadragintillion", _
"octoquadragintillion", "novemquadragintillion", "quinquagintillion", _
"unquinquagintillion", "duoquinquagintillion", "trequinquagintillion", _
"quattuorquinquagintillion", "quinquinquagintillion", _
"sexquinquagintillion", "septquinquagintillion", _
"octoquinquagintillion", _
"novemquinquagintillion", "sexagintillion", "unsexagintillion", _
"duosexagintillion", "tresexagintillion", "quattuorsexagintillion", _
"quinsexagintillion", "sexsexagintillion", "septsexagintillion", _
"octosexagintillion", "novemsexagintillion", "septuagintillion", _
"unseptuagintillion", "duoseptuagintillion", "treseptuagintillion", _
"quattuorseptuagintillion", "quinseptuagintillion", _
"sexseptuagintillion", _
"septseptuagintillion", "octoseptuagintillion", "novemseptuagintillion", _
"octogintillion", "unoctogintillion", "duooctogintillion", _
"treoctogintillion", "quattuoroctogintillion", "quinoctogintillion", _
"sexoctogintillion", "septoctogintillion", "octooctogintillion", _
"novemoctogintillion", "nonagintillion", "unnonagintillion", _
"duononagintillion", "trenonagintillion", "quattuornonagintillion", _
"quinnonagintillion", "sexnonagintillion", "septnonagintillion", _
"octononagintillion", "novemnonagintillion", "centillion" _
)
sBigWordsUK() = Array( "", "thousand", _
"milliard", "billion", "billiard", "trillion", "trilliard", _
"quadrillion", "quadrilliard", "quintillion", "quintilliard", _
"sextillion", "sextilliard", "septillion", "septilliard", _
"octillion", "octilliard", "nonillion", "nonilliard", "decillion", _
"decilliard", "undecillion", "undecilliard", "dodecillion", _
"dodecilliard", "tredecillion", "tredecilliard", "quattuordecillion", _
"quattuordecilliard", "quindecillion", "quindecilliard", "sexdecillion", _
"sexdecilliard", "septendecillion", "septendecilliard", "octodecillion", _
"octodecilliard", "novemdecillion", "novemdecilliard", "vigintillion", _
"vigintilliard", "unvigintillion", "unvigintilliard", "duovigintillion", _
"duovigintilliard", "trevigintillion", "trevigintilliard", _
"quattuorvigintillion", "quattuorvigintilliard", "quinvigintillion", _
"quinvigintilliard", "sexvigintillion", "sexvigintilliard", _
"septenvigintillion", "septenvigintilliard", "octovigintillion", _
"octovigintilliard", "novemvigintillion", "novemvigintilliard", _
"trigintillion", "trigintilliard", "untrigintillion", _
"untrigintilliard", "duotrigintillion", "duotrigintilliard", _
"tretrigintillion", "tretrigintilliard", "quattuortrigintillion", _
"quattuortrigintilliard", "quintrigintillion", "quintrigintilliard", _
"sextrigintillion", "sextrigintilliard", "septentrigintillion", _
"septentrigintilliard", "octotrigintillion", "octotrigintilliard", _
"novemtrigintillion", "novemtrigintilliard", "quadragintillion", _
"quadragintilliard", "unquadragintillion", "unquadragintilliard", _
"duoquadragintillion", "duoquadragintilliard", "trequadragintillion", _
"trequadragintilliard", "quattuorquadragintillion", _
"quattuorquadragintilliard", "quinquadragintillion", _
"quinquadragintilliard", "sexquadragintillion", "sexquadragintilliard", _
"septenquadragintillion", "septenquadragintilliard", _
"octoquadragintillion", "octoquadragintilliard", _
"novemquadragintillion", "novemquadragintilliard", "quinquagintillion", _
"quinquagintilliard" _
)
sBigWordsDE() = Array( "", "Tausand", _
"Milliarde", "Billion", "Billiarde", "Trillion", "Trilliarde", _
"Quadrillion", "Quadrilliarde", "Quintillion", "Quintilliarde", _
"Sextillion", "Sextilliarde", "Septillion", "Septilliarde", _
"Oktillion", "Oktilliarde", "Nonillion", "Nonilliarde", _
"Dezillion", "Dezilliarde", "Undezillion", "Undezilliarde", _
"Duodezillion", "Doudezilliarde", "Tredezillion", _
"Tredizilliarde", "Quattuordezillion", "Quattuordezilliarde", _
"Quindezillion", "Quindezilliarde", "Sexdezillion", _
"Sexdezilliarde", "Septendezillion", "Septendezilliarde", _
"Oktodezillion", "Oktodezilliarde", "Novemdezillion", _
"Novemdezilliarde", "Vigintillion", "Vigintilliarde", _
"Unvigintillion", "Unvigintilliarde", "Duovigintillion", _
"Duovigintilliarde", "Trevigintillion", "Trevigintilliarde", _
"Quattuorvigintillion", "Quattuorvigintilliarde", "Quinvigintillion", _
"Quinvigintilliarde", "Sexvigintillion", "Sexvigintilliarde", _
"Septenvigintillion", "Septenvigintilliarde", "Oktovigintillion", _
"Oktovigintilliarde", "Novemvigintillion", "Novemvigintilliarde", _
"Trigintillion", "Trigintilliarde", "Untrigintillion", _
"Untrigintilliarde", "Duotrigintillion", "Duotrigintilliarde", _
"Tretrigintillion", "Tretrigintilliarde", "Quattuortrigintillion", _
"Quattuortrigintilliarde", "Quintrigintillion", "Quintrigintilliarde", _
"Sextrigintillion", "Sextrigintilliarde", "Septentrigintillion", _
"Septentrigintilliarde", "Oktotrigintillion", "Oktotrigintilliarde", _
"Novemtrigintillion", "Novemtrigintilliarde", "Quadragintillion", _
"Quadragintilliarde", "Unquadragintillion", "Unquadragintilliarde", _
"Duoquadragintillion", "Duoquadragintilliarde", "Trequadragintillion", _
"Trequadragintilliarde", "Quattuorquadragintillion", _
"Quattuorquadragintilliarde", "Quinquadragintillion", _
"Quinquadragintilliarde", "Sexquadragintillion", _
"Sexquadragintilliarde", "Septenquadragintillion", _
"Septenquadragintilliarde", "Oktoquadragintillion", _
"Oktoquadragintilliarde", "Novemquadragintillion", _
"Novemquadragintilliarde", "Quinquagintillion", "Quinquagintilliarde" _
)
Dim i As Integer
Dim iInt As Integer
Dim s As String
Dim dInt As Double
REM Chop off the decimal portion.
dInt = Fix(n)
If (dInt < 1000) Then
NumberToText = SmallIntToText(CInt(dInt))
Exit Function
End If
REM i is the index into the sBigWords array
i = 0
s = ""
Do While dInt > 0
iInt = CInt(dInt - Fix(dInt / 1000) * 1000)
If iInt <> 0 Then
If Len(s) > 0 Then s = " " & s
s = SmallIntToText(iInt) & " " & sBigWordsUSA(i) & s
End If
i = i + 1
dInt = Fix(dInt / 1000)
'Print "s = " & s & " dInt = " & dInt
Loop
NumberToText = s
End Function[/code]
Meine Version für die Ausgabe in Deutsch: [url=http://www.re-solutions.de/ooo/makros/calc.Function.ZahlWort.odt]Funktion ZahlWort[/url]
[quote]
Diese (benutzerdefinierte) Funktion übersetzt den nummerischen Wert eines Zellbezugs:
Wenn in der Zelle [color=#008000][b]A1[/b][/color] der Wert [color=#008000][b]1234,56[/b][/color] steht, so ergibt die Formel [b]=ZahlWort( A1 )[/b] in einer anderen Zelle eingegeben, die Anzeige: [color=#0080FF]eintausendzweihundertvierunddreißig 56/00[/color][/quote]