Kwota słownie w LibreOffice

Utworzono: , Zmieniono:

Kwota słownie z użyciem wyłącznie wyrażeń regularnych

LibreOffice zawiera już wbudowane formatowanie kwoty w postaci słownej. Niniejszy przykład nie zastępuje go, lecz wyłącznie ma na celu pokazanie możliwości wyrażeń regularnych. Tu możesz pobrać arkusz z formułą pobierz: kwota_slownie.ods.

Szczegółowy opis

zrzut ekranu kwota słownie

Dla kogo

Formuła zapisana w pliku kwota_słownie.ods w komórce B2 jest przeznaczona dla osób (i firm), które używają LibreOffice Calc i chcą uniknąć stosowania makr lub formatowania liczb dostępnego w LibreOffice, a zależy im na prezentacji kwoty w postaci np. takiego tekstu: dwanaście tysięcy trzysta czterdzieści pięć złotych i sześćdziesiąt siedem groszy. Podana formuła jest przykładem możliwości wyrażeń regularnych. W formule wykorzystano wyłącznie funkcję REGEX. Używanie formuły jest bezpłatne.

Użytkowanie

Skopiuj komórkę B2 z pliku kwota_slownie.ods do docelowego miejsca, później edytuj wklejoną formułę poprawiając adres źródłowej komórki z kwotą, która ma być zamieniona na kwotę w postaci słownej. Zobacz przykład poniżej, w którym w edytowanej formule ustawiono komórkę B4 (tam jest liczba). Obsługa tej formuły nie różni się od obsługi innych formuł.

Dostosowanie do własnych potrzeb

Formułę można dowolnie wykorzystywać i modyfikować. Najbardziej pracochłonną czynnością jest niestety dokładne przetestowanie formuły po modyfikacjach 🙁. Tu uwaga: Dostosowanie formuły do Excela może wymagać więcej niż jednej komórki.

Przykład wykorzystania

zrzut ekranu kwota słownie zrzut ekranu kwota słownie zrzut ekranu kwota słownie zrzut ekranu kwota słownie
  1. Skopiuj komórkę B2.
  2. Wklej w docelowym miejscu (w przykładzie C4).
  3. Edytuj formułę poprawiając adres źródłowej komórki z kwotą liczbową (w przykładzie na B4).
  4. Obejrzyj efekt.

Treść formuły

Domyślną komórką źródłową jest A2. Widać to po ostatnim REGEX.

=REGEX(REGEX(REGEX(REGEX(REGEX(REGEX(REGEX(REGEX(REGEX(REGEX( REGEX(REGEX(REGEX(REGEX(REGEX(REGEX(REGEX(REGEX(REGEX(REGEX( REGEX(REGEX(REGEX(REGEX(REGEX(REGEX(REGEX(REGEX(REGEX(REGEX(A2 ;"\s";"";"g") ;"^.*,.*,.*$";".") ;"^.*[^0-9,-].*$";"NIEDOZWOLONE_ZNAKI") ;"^-?\d\d{27}.*$";"ZBYT_DUŻO_CYFR") ;"^.*,\d{3}.*$";"ZBYT_DUŻO_CYFR_PO_PRZECINKU") ;"^([0-9-]*)$";"$1,00") ;"^([0-9,-]*)$";"$100") ;"^(-?)(\d*,\d*)$";"$1000000000000000000000000000$2") ;"^(-?).*(\d{27},\d{2}).*$";"$1$2") ;"^(-?)(\d{3})(\d{3})(\d{3})(\d{3})(\d{3})(\d{3})(\d{3})(\d{3})(\d{3}),(\d{2})";"$1$2fm$3fl$4fk$5fj$6fi$7fe$8fd$9fc$10fb$11fa") ;"([^1][234])f";"$1g";"g") ;"((0|b)01)f";"$1h";"g") ;"(\d)?(\d)(\d)";"$1x$2v$3u";"g") ;"((0\D){3}(f|g|h)[^ba])|(0\D)";"";"g") ;"(1)v(\d)u";"$1$2q";"g") ;"((1)|(2)|(3)|(4)|(5)|(6)|(7)|(8)|(9))x";" $2_sto $3_dwieście $4_trzysta $5_czterysta $6_pięćset $7_sześćset $8_siedemset $9_osiemset $10_dziewięćset "; "g") ;"((11)|(12)|(13)|(14)|(15)|(16)|(17)|(18)|(19))q";" $2_jedenaście $3_dwanaście $4_trzynaście $5_czternaście $6_piętnaście $7_szesnaście $8_siedemnaście $9_osiemnaście $10_dziewiętnaście "; "g") ;"((1)|(2)|(3)|(4)|(5)|(6)|(7)|(8)|(9))v";" $2_dziesięć $3_dwadzieścia $4_trzydzieści $5_czterdzieści $6_pięćdziesiąt $7_sześćdziesiąt $8_siedemdziesiąt $9_osiemdziesiąt $10_dziewięćdziesiąt "; "g") ;"((1)|(2)|(3)|(4)|(5)|(6)|(7)|(8)|(9))u";" $2_jeden $3_dwa $4_trzy $5_cztery $6_pięć $7_sześć $8_siedem $9_osiem $10_dziewięć "; "g") ;"[ ]_[:alpha:]+";" ";"g") ;"[ ]\d\d?_([:alpha:]+)";"$1";"g") ;"(fm)|(gm)|(hm)|(fl)|(gl)|(hl)|(fk)|(gk)|(hk)|(fj)|(gj)|(hj)|(fi)|(gi)|(hi)|(fe)|(ge)|(he)|(fd)|(gd)|(hd)|(fc)|(gc)|(hc)|(fb)|(gb)|(hb)|(fa)|(ga)|(ha)|(-)";" $31_minus $1_kwadrylionów $2_kwadryliony $3_kwadrylion $4_tryliardów $5_tryliardy $6_tryliard $7_trylionów $8_tryliony $9_trylion $10_biliardów $11_biliardy $12_biliard $13_bilionów $14_biliony $15_bilion $16_miliardów $17_miliardy $18_miliard $19_milionów $20_miliony $21_milion $22_tysięcy $23_tysiące $24_tysiąc $25_złotych $26_złote $27_złoty $28_groszy $29_grosze $30_grosz "; "g") ;"[ ]_[:alpha:]+";" ";"g") ;"[ ]\w\w_([:alpha:]+)";"$1";"g") ;"( -_)|(^[ ]*)|([ ]*$)";"";"g") ;"x";"i ";"g") ;"[ ]+";" ";"g") ;"((minus )|^)(złotych)";"$2zero $3") ;" i groszy";" i zero groszy") ;"_";" ";"g")