Číslo v slovách c. Ako napísať množstvo, počet, čísla slovami v Exceli. Čísla v slovách s centami veľkými alebo malými písmenami v Exceli

Pri zobrazovaní rôznych zostáv je často potrebné previesť číselnú hodnotu na reťazec v slovách. V 1C je to vyriešené veľmi jednoducho: na tento účel je k dispozícii funkcia Číslo v slovách ().

Pri tvorení čísla slovom je možné vedľa neho zobraziť aj predmet výpočtu tohto čísla v požadovanom rode a páde. Predmet kalkulu- to je to, čo prepočítané číslo meria napríklad peniaze, krabice, vagóny, televízory atď.

  • Bez predmetu kalkul:
    • Dvadsaťdva;
    • Tristo osemdesiatštyri.
  • S predmetom kalkulu:
    • Tridsaťosem dublónov;
    • dvanásť lodí;
    • Dva domy.

Príklady

Na začiatok uvádzame príklady konverzie, aby sme zistili možnosti 1C:

// ***** Výstupné čísla: *****Číslo v slovách (9876,54 ); // Deväťtisíc osemsto sedemdesiatšesť 54Číslo v slovách (1234,56 , "L=ru_RU;DP=TRUE" , "celý, celý, celý, f, stotina, stotina, stotiny, f, 2"); // Tisíc dvesto tridsaťštyri bod päťdesiat šesť stotínČíslo v slovách (7432 , "L=ru_RU; NR=False" , ",0" ); // Sedemtisíc štyristo tridsaťdva // ***** Výplata: *****Číslo v slovách (9845.11 , "L=ru_RU" , ); // Deväťtisíc osemsto štyridsaťpäť rubľov 11 kopejokČíslo v slovách (2845.11 , "L=ru_RU;DP=True" , "rubeľ, rubeľ, ruble, m, cent, cent, cent, f, 2"); // Dvetisíc osemsto štyridsaťpäť rubľov jedenásť kopejokČíslo v slovách (555,16 , "L=ru_RU;DP=True" , "dolár, dolár, doláre, m, cent, cent, cent, m, 2"); // Päťstopäťdesiatpäť dolárov šestnásť centovČíslo v slovách (453,23 , "L=ru_RU;DP=True" , "euro, euro, euro, m, cent, cent, cent, m, 2"); // Štyristopäťdesiattri eur dvadsaťtri centov NumberWords (812.44 , "L=en_US;DP=True" , "dolár, doláre, cent, centy, 2"); // Osemstodvanásť dolárov štyridsaťštyri centov NumberWords(3945,76 , "L=sk_US;DP=True" , ​​​​"euro, eurá, cent, centy, 2" ); // Tritisícdeväťstoštyridsaťpäť eur sedemdesiatšesť centov // ***** Môžete previesť nielen peňažné jednotky: *****Číslo v slovách (535 , "L=ru_RU" , "box, boxy, boxy, f, f, 0"); // Päťsto tridsaťpäť škatúľČíslo v slovách (342 , "L=ru_RU" , "tv, tv, tv, m, m, 0"); // Tristoštyridsaťdva televízorov

Popis práce s funkciou

Ako sme zistili, na získanie čísla slovami sa používa funkcia

Číslo v slovách (< Число >, < FormatString>, < ParametersItemCalculus>)

Funkcia vráti hodnotu reťazca. Ako vstupné parametre sa odovzdávajú nasledovné:

  • Číslo je hodnota, ktorá sa má previesť;
  • FormatString - možnosti formátovania:
    • L - Lokalizačný kód (napríklad u_RU - ruština; en_US - angličtina, de_DE - nemčina). Štandardne sa používajú nastavenia operačného systému.
    • NP - Zobrazenie názvu predmetu kalkulu, predvolene - Pravda.
    • ND - Zobrazenie názvu desatinných častí predmetu výpočtu, štandardne - Pravda.
    • DP - Zobrazenie zlomkovej časti v slovách/číslo, štandardne - False.
    • AI - Výstupné spojenie a. Analyzované len pre anglickú lokalizáciu. Možné hodnoty: "Don't Use", "Use".
  • CalculusItemParameters - čiarkami oddelené vymenovanie parametrov objektu kalkulu. Formát závisí od miestneho nastavenia.

Pre ruský jazyk sú parametre predmetu výpočtu vo forme „rubeľ, rubeľ, ruble, m, kopeck, kopeck, kopeck, f, 2“, kde:

  • rubeľ - nominatív jednotného čísla;
  • rubeľ - genitív jednotného čísla;
    ruble - množný genitív;
    m - mužský rod (g - ženský rod, s - stredný rod);
    „penny, penny, penny, w“ - zlomková časť podobná predmetu výpočtu (môže chýbať);
    "2" - počet číslic zlomkovej časti (môže chýbať, predvolená hodnota je 2).

Použitie v typických riešeniach

V konfiguráciách postavených na , v spoločnom module Kurzy pracovných mien existuje funkcia

GenerateAmountWords(Číslo sumy , Mena , Vybrať čiastkuWithoutKopecks= nepravda)

Funkcia sa používa na prevod menových čiastok na reťazec v slovách.

Máte nejaké otázky?
Opýtajte sa v komentároch k článku.

Ak máte pochybnosti o tom, ako sa niečo píše kurzívou v angličtine alebo v ruštine, použite náš prekladač číslic. Pre vykonanie prekladu zadajte požadovaný počet vo forme čísel a program vypočíta jeho písomnú podobu.

V súčasnosti je limit prekladateľa 18 desatinných miest (pre celočíselné hodnoty) a 18 číslic za desatinnou čiarkou (pre preklad hodnôt obsahujúcich zlomkovú časť).

číslo:

Ako vidíte vyššie, pre preložené číslo je uvedených niekoľko anglických hláskovaní. S ich pomocou môžete rozoznať rozdiel medzi americkou angličtinou (AmE) a britskou angličtinou (BrE). Pre každý z nich je možné poskytnúť aj niekoľko možností pravopisu, ktoré v texte použiť, závisí od kontextu vety.

Tento program sa rovnako ľahko vyrovnáva s prekladom čísel do textu, ako napríklad anglického jazyka a pre ruštinu. Tie. ak potrebujete napísať číslo slovami v ruštine, stačí ho zadať v číselnom formáte a kliknúť na tlačidlo „Preložiť“.

Notový zápis

Pri preklade do ruštiny berie prekladateľ do úvahy možné zmeny pohlavia pre dané číslo, ktoré sú označené nasledujúcimi ikonami:
- ženský rod, - mužský rod, - stredný rod.

Náš program vie okrem čísel zapísať aj rôzne sumy peňazí slovom. V tomto prípade sa prevod uskutoční okamžite v troch rôznych menách: rubľoch, dolároch a librách šterlingov.

Tlačidlo slúži na prepínanie medzi režimami „Číslo slovami“ a „Množstvo slovami“.

V prvom rade sa zameriavame na ľudí, ktorí sa učia angličtinu. jazyku, ale ak bude tento prekladač užitočný aj niekomu inému (napríklad pri vypĺňaní obchodných dokumentov), ​​budeme veľmi radi.

Veľmi častou úlohou je písať čísla slovami v Exceli. V Exceli zatiaľ nie je vstavaná funkcia, takže si môžeme vytvoriť vlastnú funkciu, ktorá nahradí čísla, čísla textom.

Spravidla sa to vyžaduje v obchode, účtovníctve a iných oblastiach, kde sa uskutočňujú zúčtovania v hotovosti. Zvyčajne je potrebné previesť sumu v rubľoch a kopejkách slovami, ako na obrázku (prvý príklad).

Povedzme, že urobíme nejaké výpočty v tabuľke a získame celkovú sumu v rubľoch 1526,23

Tento údaj musíme zapísať v rubľoch a je žiaduce uviesť aj cent. Na tento účel vytvoríme špeciálnu univerzálnu užívateľom definovanú funkciu, ktorá bude vyzerať takto

Propis(Suma ;Peniaze ;lang ;Prec )

Peniaze - tu je uvedený typ meny, môžete zadať ruble, doláre a eurá ("RUB", "USD", "EUR") - mena musí byť uvedená v úvodzovkách.

lang - toto je jazyk, v ktorom musíte vybrať sumu, dva jazyky, ktoré sú k dispozícii angličtina a ruština („EN“, „RU“) - uvádzame aj v úvodzovkách

Predbežne zobraziť (1) alebo nezobraziť (0) zlomkovú časť

Čiastku teda môžete napísať v rubľoch, dolároch alebo eurách slovami ruskými alebo anglickými písmenami spolu s zlomkovou časťou, pričom v závislosti od čísla sa vloží správny koniec, napríklad 2 ruble, 8 rubľov, 1 rubeľ a pod.

Ak chcete vytvoriť vlastnú funkciu Propis, musíte skopírovať kód nižšie a potom kliknúť ALT + F11 na otvorenie VBA pridajte nový prázdny modul cez menu Vložiť modul a vložte tam skopírovaný kód

Makro vlastnej funkcie pre súčet v slovách

Funkcia Propis(Suma ako reťazec, voliteľné peniaze ako reťazec = "RUB", voliteľný jazyk ako reťazec = "RU", voliteľná cena ako celé číslo = 1) Dim whole As Double Amount = Replace(Amount, "-", Application.International( xlDecimalSeparator)) Suma = Nahradiť(Suma, ".", Aplikácia.International(xlDecimalSeparator)) Suma = Nahradiť(Suma, ",", Aplikácia.International(xlDecimalSeparator)) Suma = Funkcia pracovného listu.Round(CDbl(Suma), 2) Peniaze = UCase(Peniaze) lang = UCase(lang) celé = Int(Sum) fraq = Format(Round((Sum - whole) * 100), "00") Vyberte triedu prípadu (celý, 1) + Trieda (celý, 2) * 10 Prípad 1, 21, 31, 41, 51, 61, 71, 81, 91 w_rus_r = "rubeľ" w_rus_d = "dolár" w_rus_e = "euro" w_en_r = "ruble" w_en_d = "dolárov" w_ euro" Prípad 2, 3, 4, 22, 23, 24, 32, 33, 34, 42, 43, 44, 52, 53, 54, 62, 63, 64, 72, 73, 74, 82, 83, 84 , 92, 93, 94 w_rus_r = "ruble" w_rus_d = "doláre" w_rus_e = "euro" w_en_r = "ruble" w_en_d = "doláre" w_en_e = "euro" Prípad Iný w_rus_r = "ruble " w_rus_d = "doláry" w_rus_e = "euro" w_en_r = "ruble" w_en_d = "doláre" w_en_e = "euro" Koniec Vybrať Vyberte prípad fraq Prípad 1, 21, 31, 41, 51, 61, 71, 81, 91 = "cent" f_rus_d = "cent" f_rus_e = "cent" f_rus_p = "stotina" f_en_r = "kopecks" f_en_d = "centy" f_en_e = "centy" f_en_e = "centy" Prípad 2, 3, 4, 22, 23, 24, 32, 33, 34, 42, 43, 44, 52, 53, 54, 62, 63, 64, 72, 73, 74, 82, 83, 84, 92, 93, 94 "centov" "f_rus_e" " f_en_r = "kopecky" f_en_d = "centy" f_en_e = "centy" Prípad Inak f_rus_r = "kopeks" f_rus_d = "centy" f_rus_e = "centy" f_en_r = "kopecky" f_en_d = "centy" f_en_e = "centy" If Prec = 0 Then fraq = "" f_rus_r = "" f_rus_d = "" f_rus_e = "" f_en_r = "" f_en_d = "" f_en_e = "" Koniec If lang = "RU" Potom vyberte Case Case "RUB" Out = ScriptRus(celé) & " " & w_rus_r & " " & fraq & " " & f_rus_r Case "USD" Out = ScriptRus(celé) & " " & w_rus_d & " " & fraq & " " & f_rus_ d Case "EUR" Out = ScriptRus(celé) & " " & w_rus_e & " " & fraq & " " & f_rus_e End Vyberte End If lang = "EN" Potom vyberte Case Money Case "RUB" Out = ScriptEng(celé) & " " & w_en_r & " " & fraq & " " & f_en_r Case "USD" Out = ScriptEng (celé) & " " & w_en_d & " " & fraq & " " & f_en_d Case "EUR" Out = ScriptEng (celé) & " " & w_en_e & " " & fraq & " " & f_en_e End Vyberte Koniec If Propis = WorksheetFunction.Trim(Out) End Function Súkromná funkcia Class(m, i) Class = Int(Int(m - (10 ^ i)) * Int(m / (10 ^ i))) / 10 ^ (i - 1)) Koncová funkcia Súkromná funkcia ScriptRus(n As Double) As String Dim Nums1, Nums2, Nums3, Nums4 As Variant Nums1 = Array("", " jeden", "dva", "tri", "štyri", "päť", "šesť", "sedem", "osem", "deväť") Nums2 = Array("", "desať", "dvadsať" , "tridsať", "štyridsať", "päťdesiat", "šesťdesiat", "sedemdesiat", "osemdesiat", "deväťdesiat") Nums3 = Array("", "sto", "dvesto", "tristo", "štyristo", "päťsto", "šesťsto", "sedemsto", "in sedemsto", "deväťsto") Nums4 = Array("", "jeden", "dva", "tri", "štyri", "päť", "šesť", "sedem", "osem", "deväť" ") Nums5 = Array("desať", "jedenásť", "dvanásť", "trinásť", "štrnásť", "pätnásť", "šestnásť", "sedemnásť", "osemnásť", "devätnásť") Ak n = 0 Potom ScriptRus = "Nula" Koniec funkcie Ak ed = Trieda (n, 1) dec = Trieda (n, 2) sot = Trieda (n, 3) tys = Trieda (n, 4) dectys = Trieda (n, 5) sottys = Class(n, 6) mil = Class(n, 7) decmil = Class(n, 8) sotmil = Class(n, 9) mlrd = Class(n, 10) Ak mlrd > 0, potom vyberte prípad mlrd Prípad 1 mlrd_txt = Nums1(mlrd) & "miliarda" Prípad 2, 3, 4 mlrd_txt = Nums1(mlrd) & "miliarda" Prípad 5 až 20 mlrd_txt = Nums1(mlrd) & "miliarda " Koniec Vyberte Koniec If (sotmil + decmil + mil ) > 0 Potom sotmil_txt = Nums3(sotmil) Vybrať prípad decmil Prípad 1 mil_txt = Nums5(mil) & "milióny" Prejsť na www Prípad 2 až 9 decmil_txt = Nums2(decmil) Koniec Výber prípadu mil prípad 1 mil_txt = Nu ms1(mil) & "million" Prípad 2, 3, 4 mil_txt = Nums1(mil) & "million" Prípad 0, 5 až 20 mil_txt = Nums1(mil) & "million" Koniec Vyberte Koniec Ak www: sottys_txt = Nums3( sottys) Vyberte prípad dectys Prípad 1 tys_txt = Nums5(tys) & "tisíce " Prejsť na eee Prípad 2 až 9 dectys_txt = Nums2(dectys) Koniec Vybrať Vyberte prípad tys Case 0 Ak dectys > 0 Potom tys_txt = Nums4(thoustys) & " Prípad 1 tys_txt = Nums4(tys) & "tisíc" Prípad 2, 3, 4 tys_txt = Nums4(tys) & "tisíce " Prípad 5 až 9 tys_txt = Nums4(tys) & "tisíce" Koniec Vyberte Ak dectys = 0 A tys = 0 A sottys<>0 Potom sottys_txt = sottys_txt & "tisíce" eee: sot_txt = Nums3(sot) Vyberte prípad dec Case 1 ed_txt = Nums5 (ed) Prejsť na rrr Prípad 2 až 9 dec_txt = Nums2 (dec) Koniec Vyberte ed_txt = Numrrs1 ScriptRus = mlrd_txt & sotmil_txt & decmil_txt & mil_txt & sottys_txt & dectys_txt & tys_txt & sot_txt & dec_txt & ed_txt Funkcia Súkromná funkcia ScriptEng(ByVal Number As Double) Dim BigDenom As String, Temp As String Dim Counting As Integer As ReD Miesto(2) = "Tisíc" Miesto(3) = "Milión" Miesto(4) = "miliarda" Miesto(5) = "bilión" strAmount = Trim(Str(Int(Number))) Count = 1 Do While strAmount<>"" Temp = GetHundreds(Right(strAmount, 3)) Ak Temp<>"" Potom BigDenom = Temp & Place (Count) & BigDenom If Len(strAmount) > 3 Then strAmount = Left(strAmount, Len(strAmount) - 3) Else strAmount = "" End If Count = Count + 1 slučka Vyberte prípad BigDenom Case "" BigDenom = "Nula " Case "One" BigDenom = "Jedna " Case Else BigDenom = BigDenom & " " End Select ScriptEng = BigDenom End Function Súkromná funkcia GetHundreds(ByVal MyNumber) Dim result As String If Val(MyNumber) = 0 Potom ukončite funkciu MojeČíslo = Vpravo("000" & MojeČíslo, 3) Ak Mid(MojeČíslo, 1, 1)<>"0" Potom výsledok = GetDigit(Mid(MyNumber, 1, 1)) & "Hundred " End If Mid(MyNumber, 1, 1)<>"0" A (Stred (Moje Číslo, 2, 1)<>"0" alebo stred (Moje číslo, 3, 1)<>"0"), potom výsledok = výsledok & "A " End If Mid(MojeČíslo, 2, 1)<>"0" Potom výsledok = výsledok & GetTens(Mid(MojeČíslo, 2)) Inak výsledok = Výsledok & GetDigit(Mid(MojeČíslo, 3)) End If GetHundreds = výsledok End Function Súkromná funkcia GetTens(TensText) Dim result As String result = "" Ak Val(Left(TensText, 1)) = 1 Potom vyberte prípad Val(TensText) Prípad 10: výsledok = "Desať" Prípad 11: výsledok = "Jedenásť" Prípad 12: výsledok = "Dvanásť" Prípad 13: výsledok = „trinásť“ Prípad 14: výsledok = „štrnásť“ Prípad 15: výsledok = „pätnásť“ Prípad 16: výsledok = „šestnásť“ Prípad 17: výsledok = „sedemnásť“ Prípad 18: výsledok = „osemnásť“ Prípad 19: výsledok = „devätnásť“ " " Prípad Else End Select Else Select Case Val(Left(TensText, 1)) Prípad 2: výsledok = "Dvadsať" Prípad 3: výsledok = "Tridsať" Prípad 4: výsledok = "Štyridsať" Prípad 5: výsledok = "Päťdesiat " Prípad 6: výsledok = "šesťdesiat" Prípad 7: výsledok = "sedemdesiat" Prípad 8: výsledok = "osemdesiat" Prípad 9: výsledok = "deväťdesiat" Prípad Inak Koniec Vybrať výsledok = výsledok & GetDigit _ (Right(TensText, 1)) End If GetTens = výsledok End Function Súkromná funkcia GetDigit(D igit) Select Case Val(Digit) Prípad 1: GetDigit = "Jedna" Prípad 2: GetDigit = "Dva" Prípad 3: GetDigit = "Tri" Prípad 4: GetDigit = "Štyri" Prípad 5: GetDigit = "Five" Prípad 6 : GetDigit = "Six" Prípad 7: GetDigit = "Seven" Prípad 8: GetDigit = "Eight" Prípad 9: GetDigit = "Deväť" Prípad Else: GetDigit = "" End Select End Function

Funkcia bola vytvorená, na jej použitie stačí zadať bunku Propis s potrebnými argumentmi, napríklad ak potrebujeme napísať sumu slovami v rubľoch a kopejkách a v ruštine, vzorec bude vyzerať takto.

Propis(B2;"RUB";"RU";1)

Čísla v slovách s centami veľkými alebo malými písmenami v Exceli

Tu je kód VBA pre vlastnú funkciu. Zobrazte sumu slovami s kopejkami a výberom prvého veľkého alebo malého písmena

Funkcia RubWrite(Amount As Double, Voliteľné Bez Copecks As Boolean = False, _ Voliteľné COP As Boolean = False, Voliteľné Capitalize As Boolean = True) As String "Funkcia na zápis súčtu v slovách Dim ed, des, sot, ten, razr, dec Dim i As Integer, str As String, s As String Dim intPart As String, frPart As String Dim mlnEnd, tscEnd, razrEnd, rub, cop dec = Array("", "one", "dva", "tri", " štyri ", "päť", "šesť", "sedem", "osem", "deväť") ed = Array("", "jeden", "dva", "tri", "štyri", "päť", " šesť", "sedem", "osem", "deväť") desať = Array("desať", "jedenásť", "dvanásť", "trinásť", "štrnásť", "pätnásť", "šestnásť", "sedemnásť" " , "osemnásť", "devätnásť") des = Array("", "", "dvadsať", "tridsať", "štyridsať", "päťdesiat", "šesťdesiat", "sedemdesiat", "osemdesiat", "deväťdesiat" " ) sot = Array("", "sto", "dvesto", "tristo", "štyristo", "päťsto", "šesťsto", "sedemsto", "osemsto", " deväťsto ") razr = Pole("", "tisíce", "milión", "miliarda") mlnEnd = Pole("s", " ", "a", "a", "a", "s", "s" ", "s", "s", "s") tscEnd = Array(" ", "a", "and", "and", "and", "", "", "", "", " ") razrEnd = Array(mlnEnd, mlnEnd, tscEnd, "") rub = Array("ruble", "ruble", "ruble", "ruble", "ruble", "ruble", "ruble", "ruble" , "ruble", "ruble") policajt = Array("penny", "cent", "penny", "cent", "cent", "cent", "cent", "cent", "cent", " kopecks") Ak Suma >= 1000000000000# alebo Suma< 0 Then РубПропись = CVErr(xlErrValue): Exit Function "&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& If Round(Сумма, 2) >= 1 Potom intPart = Left$(Format(Sum, "000000000000.00"), 12) Pre i = 0 až 3 s = Mid$(intPart, i * 3 + 1, 3) Ak s<>"000" Potom str = str & sot(CInt(Left$(s, 1))) If Mid$(s, 2, 1) = "1" Then str = str & ten(CInt(Right$(s, 1) ))) Else str = str & des(CInt(Stred$(s, 2, 1))) & IIf(i = 2, dec(CInt(Right$(s, 1))), ed(CInt(Right$ (s, 1)))) End If On Error Resume Next str = str & IIf(Mid$(s, 2, 1) = "1", razr(3 - i) & razrEnd(i)(0), _ razr(3 - i) & razrEnd(i)(CInt(Right$(s, 1)))) On Error GoTo 0 End If Next i str = str & IIf(Mid$(s, 2, 1) = "1 ", rub(0), rub(CInt(Right$(s, 1)))) End If RubProfile = str """""""""""""""" If No_kopeks = False Then frPart = Right$(Format(Amount, "0.00"), 2) If frPart = "00" Then frPart = "" Else If CopyWritten Then frPart = IIf(Left$(frPart, 1) = "1", ten(CInt( Right $(frPart, 1))) & cop(0), _ des(CInt(Left$(frPart, 1))) & dec(CInt(Right$(frPart, 1))) & cop(CInt(Right$ ( frPart, 1)))) Inak frPart = IIf(Left$(frPart, 1) = "1", frPart & " " & policajt(0), frPart & " " & policajt(CInt(Right$(frPart, 1 ) ))) End If End If RubWriting = str & " " & frPart End If """""""""" """""""" " RubCapital = str & frPart If beginCapital Then Mid$(RubCapital, 1, 1) = UCase(Mid$(RubCapital, 1, 1)) " If beginCapital Then RubCapital = UCase(Left(RubCapital) , 1)) & Mid (RubWriting, 2) End Function

  • Bez kopejok (1), s kopejkami (0)
  • Penny slovami (1), číslom (0)
  • Začať kurzívou (0), veľkým (1)

Tu je návod, ako sa funkcia používa


Poznámka

  • Táto funkcia bude pracovať s číslami od 0 do 99999999
  • Pred kopírovaním kódu prepnite rozloženie klávesnice na ruštinu (pre správne kopírovanie ruského textu)
  • Kód VBA musí byť vložený do všetkých súborov ( Excel knihy), kde chcete, aby to fungovalo
  • Po vložení kódu je potrebné uložiť súbor xlsm s podporou makier (v Exceli od verzie 2007)
  • Funkciu je možné zadať buď ručne, alebo, ak ste zabudli, ako je napísaná, pomocou sprievodcu funkciou (tlačidlo fx na paneli vzorcov, kategória definovaná používateľom)