Szczegółowy opis
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
- Skopiuj komórkę B2.
- Wklej w docelowym miejscu (w przykładzie C4).
- Edytuj formułę poprawiając adres źródłowej komórki z kwotą liczbową (w przykładzie na B4).
- 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")