LibreOffice Calc non ha una funzione incorporata che possa visualizzare i numeri come parole inglesi nel foglio di lavoro, ma puoi aggiungere questa funzionalità inserendo la seguente macro di funzione SpellNum_YouLibreCalc nel modulo Basic.
Questa funzione ti consente di convertire i numeri in parole in qualsiasi valuta utilizzando una formula, ad esempio un numero 22.50 verrà letto come
Questo può essere molto utile se usi LO Calc come modello per compilare assegni o altri documenti contabili.
Per aggiungere la propria funzione per la somma scritta in inglese, aprire il menu Tools - Macros - Edit Macros..., selezionare Module1 e copiare il seguente testo di codice nel modulo selezionato:
Function SpellNum_YouLibreCalc(ByVal MyNumber, Optional CurrNameS, Optional CurrNamePl, Optional CentNameS, Optional CentNamePl, Optional Modifier, Optional CurrPlace, Optional AddZero) 'moonexcel.com.ua Dim Place(9) As String Dim FCalc As Object Dim Dollars, Cents, Temp, DecimalPlace, Count, CalcResult If Len(MyNumber) = 0 Then Exit Function FCalc = CreateUnoService("com.sun.star.sheet.FunctionAccess") If IsMissing(CurrNameS) Then CurrNameS = 0 If IsMissing(CurrNamePl) Then CurrNamePl = 0 If IsMissing(CentNameS) Then CentNameS = 0 If IsMissing(CentNamePl) Then CentNamePl = 0 If IsMissing(Modifier) Then Modifier = 0 If IsMissing(CurrPlace) Then CurrPlace = 0 If IsMissing(AddZero) Then AddZero = 0 If CurrNameS = 0 Then CurrNameS = "" If CurrNamePl = 0 Then CurrNamePl = "" If CentNameS = 0 Then CentNameS = "" If CentNamePl = 0 Then CentNamePl = "" Place(2) = " Thousand " Place(3) = " Million " Place(4) = " Billion " Place(5) = " Trillion " MyNumber = Trim(Str(MyNumber)) ValMyNumber = Val(MyNumber) DecimalPlace = InStr(MyNumber, ".") If DecimalPlace > 0 Then If Modifier = 5 Then Cents = GetHundreds(Left(Mid(MyNumber, DecimalPlace + 1) & "000", 3)) Else Cents = GetTens(Left(Mid(MyNumber, DecimalPlace + 1) & "00", 2)) End If MyNumber = Trim(Left(MyNumber, DecimalPlace - 1)) End If Count = 1 Do While MyNumber <> "" Temp = GetHundreds(Right(MyNumber, 3)) If Temp <> "" Then Dollars = Temp & Place(Count) & Dollars If Len(MyNumber) > 3 Then MyNumber = Left(MyNumber, Len(MyNumber) - 3) Else MyNumber = "" End If Count = Count + 1 Loop If Modifier = 3 Then CalcResult = FCalc.callFunction("MOD", Array(ValMyNumber, 1)) CalcResult = FCalc.callFunction("ROUND", Array(CalcResult, 2)) Cents = Str(CalcResult * 100) & "/100" End If If Modifier = 4 Then CalcResult = FCalc.callFunction("MOD", Array(ValMyNumber, 1)) CalcResult = FCalc.callFunction("ROUND", Array(CalcResult, 3)) Cents = Str(CalcResult * 1000) & "/1000" End If If CurrPlace = 1 Then If Len(Dollars) = 0 Then Dollars = CurrNamePl & " Zero" ElseIf Dollars = "One" Then Dollars = CurrNameS & " One" Else Dollars = CurrNamePl & " " & Dollars End If Else If Len(Dollars) = 0 Then Dollars = "Zero " & CurrNamePl ElseIf Dollars = "One" Then Dollars = "One " & CurrNameS Else Dollars = Dollars & " " & CurrNamePl End If End If LenCents = Len(Cents) If CurrPlace = 1 Then If LenCents = 0 Then Cents = CentNamePl & " Zero" ElseIf Cents = "One" Then Cents = CentNamePl & " One" Else Cents = CentNamePl & " " & Cents End If Else If LenCents = 0 Then Cents = "Zero " & CentNamePl ElseIf Cents = "One" Then Cents = "One " & CentNameS Else Cents = Cents & " " & CentNamePl End If End If If Modifier <> 2 Then Cents = " and " & Cents If LenCents = 0 And AddZero <> 1 Then Cents = "" Select Case Modifier Case 1: SpellNumber = Dollars Case 2: SpellNumber = Cents Case Else: SpellNumber = Dollars & Cents End Select SpellNum_YouLibreCalc = FCalc.callFunction("TRIM", Array(SpellNumber)) End Function Function GetHundreds(ByVal MyNumber) Dim Result As String If Val(MyNumber) = 0 Then Exit Function MyNumber = Right("000" & MyNumber, 3) 'Перетворити розряд сотень If Mid(MyNumber, 1, 1) <> "0" Then Result = GetDigit(Mid(MyNumber, 1, 1)) & " Hundred " End If 'Перетворити розряди десятків і одиниць If Mid(MyNumber, 2, 1) <> "0" Then Result = Result & GetTens(Mid(MyNumber, 2)) Else Result = Result & GetDigit(Mid(MyNumber, 3)) End If GetHundreds = Result End Function Function GetTens(TensText) Dim Result As String 'Обнулити значення тимчасової функції Result = "" 'Якщо значення між 10-19... If Val(Left(TensText, 1)) = 1 Then Select Case Val(TensText) Case 10: Result = "Ten" Case 11: Result = "Eleven" Case 12: Result = "Twelve" Case 13: Result = "Thirteen" Case 14: Result = "Fourteen" Case 15: Result = "Fifteen" Case 16: Result = "Sixteen" Case 17: Result = "Seventeen" Case 18: Result = "Eighteen" Case 19: Result = "Nineteen" Case Else End Select Else 'Якщо значення між 20-99... Select Case Val(Left(TensText, 1)) Case 2: Result = "Twenty " Case 3: Result = "Thirty " Case 4: Result = "Forty " Case 5: Result = "Fifty " Case 6: Result = "Sixty " Case 7: Result = "Seventy " Case 8: Result = "Eighty " Case 9: Result = "Ninety " Case Else End Select 'Отримати своє місце Result = Result & GetDigit(Right(TensText, 1)) End If GetTens = Result End Function Function GetDigit(Digit) Select Case Val(Digit) Case 1: GetDigit = "One" Case 2: GetDigit = "Two" Case 3: GetDigit = "Three" Case 4: GetDigit = "Four" Case 5: GetDigit = "Five" Case 6: GetDigit = "Six" Case 7: GetDigit = "Seven" Case 8: GetDigit = "Eight" Case 9: GetDigit = "Nine" Case Else: GetDigit = "" End Select End Function
Quindi, chiudi Macro Editor, torna a LibreOffice Calc, seleziona una cella qualsiasi e utilizza la nostra nuova funzione.
Puoi anche utilizzare la funzione SPELLNUMBER() installando l'estensione gratuita YouLibreCalc.oxt o la sua versione completa YLC_Utilities.oxt .
Successivamente, questa funzione sarà disponibile in tutti i file che verranno aperti in LibreOffice Calc.