LibreOffice Calc, sayıları çalışma sayfasında İngilizce sözcükler olarak görüntüleyebilen yerleşik bir işleve sahip değildir, ancak aşağıdaki SpellNum_YouLibreCalc işlev makrosunu Basic modülüne ekleyerek bu özelliği ekleyebilirsiniz.
Bu işlev, sayı gibi bir formülü kullanarak sayıları herhangi bir para birimindeki kelimelere dönüştürmenize olanak tanır. 22.50 olarak okunacak
Çekleri veya diğer muhasebe belgelerini doldurmak için LO Calc'yi şablon olarak kullanırsanız bu çok yararlı olabilir.
İngilizce yazılan toplama kendi fonksiyonunuzu eklemek için Tools - Macros - Edit Macros... menüsünü açın, Module1 seçeneğini seçin ve aşağıdaki kod metnini seçilen modüle kopyalayın:
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
Ardından, Macro Editor'u kapatın, LibreOffice Calc'ye dönün, herhangi bir hücreyi seçin ve yeni fonksiyonumuzu kullanın.
Ücretsiz uzantıyı yükleyerek SPELLNUMBER() işlevini de kullanabilirsiniz. YouLibreCalc.oxt veya tam özellikli sürümü YLC_Utilities.oxt .
Bundan sonra bu fonksiyon LibreOffice Calc'de açılacak tüm dosyalarda mevcut olacaktır.