5.9.09

Numbertext: liczby słownie (i jeszcze więcej)

2 lata temu na łamach tegoż poradnika opublikowałem wpis instruujący, jak za pomocą prostego makropolecenia zautomatyzować sobie pracę w Calcu. Wczoraj zaś odkryłem rozszerzenie, które robi to samo i jeszcze więcej!

Numbertext, bo tak brzmi jego nazwa, to dodatek, który nie tylko zmienia zapis liczbowy na słowny, ale również konwertuje liczby na walutę. Ponadto potrafi skonwertowaną walutę zapisać w nastu obcych językach! Kolejnym plusem tego dodatku jest jego forma. Dzięki dystrybucji w postaci rozszerzenia, każdy użytkownik poradzi sobie z jego integracją (instalacją) z OpenOffice.org.

Rozszerzenie Numbertext jest odpowiedzią na (ograniczoną) funkcję BAHTTEXT w Excelu. Zanim jeszcze przejdziemy do głównej części tego wpisu, dopowiem, że społeczność skupiona wokół tej funkcji usiłowała zastąpić nią BAHTTEXT w specyfikacji OpenDocumentFormat Formula (ODFF) w ODF 1.2.

Po instalacji dodatku, będziemy mogli w Calcu operować na dwóch nowych funkcjach. Na NUMBERTEXT oraz na MONEYTEXT.

Przykład 1.
Aby zapisać liczbę 12345678 słownie, korzystamy z pierwszej funkcji, a zapisujemy ją następująco: =NUMBERTEXT(12345678)

Wynik: dwanaście milionów trzysta czterdzieści pięć tysięcy sześćset siedemdziesiąt osiem

Jeśli chcemy zapisać liczbę w obcym języku, używamy składni =NUMBERTEXT(1234567;"KOD_JĘZYKA"). Do testu użyłem języka domyślnego (polskiego), francuskiego (Szwajcaria), hiszpańskiego, niemieckiego, czeskiego, rosyjskiego i tajskiego. Kod dla poszczególnych języków to:

=NUMBERTEXT(12345678)
=NUMBERTEXT(12345678;"fr-CH")
=NUMBERTEXT(12345678;"es-ES")
=NUMBERTEXT(12345678;"de-DE")
=NUMBERTEXT(12345678;"cs-CZ")
=NUMBERTEXT(12345678;"ru-RU")
=NUMBERTEXT(12345678;"th-TH")

Wynik:
dwanaście milionów trzysta czterdzieści pięć tysięcy sześćset siedemdziesiąt osiem
douze millions trois cent quarante-cinq mille six cent septante-huit
doce millones trescientos cuarenta y cinco mil seiscientos setenta y ocho
zwölf Millionen dreihundertfünfundvierzigtausendsechshundertachtundsiebzig
dvanáct milionů tři sta čtyřicet pět tisíce šest set sedmdesát osm
двенадцать миллионов триста сорок пять тысяч шестьсот семьдесят восемь
สิบสองล้านสามแสนสี่หมื่นห้าพันหกร้อยเจ็ดสิบแปด

Przykład 2.
Aby skonwertować liczbę na walutę, wpisujemy funkcję =MONEYTEXT(50). Funkcja ta również doskonale sobie radzi z odmianą liczb po przecinku.

Wynik:
pięćdziesiąt złotych
pięćdziesiąt złotych osiemdziesiąt groszy
pięćdziesiąt złotych osiem groszy

Chcąc zaznaczyć, że chodzi nam obcą walutę, posługujemy się analogicznym zapisem: =MONEYTEXT(50;"KOD_WALUTY"). W tym przypadku użyłem "GBP" i "CNY" dla waluty Królestwa Wielkiej Brytanii i Chin.

Wynik:
pięćdziesiąt funtów szterlingów
pięćdziesiąt funtów szterlingów osiemdziesiąt pensów
pięćdziesiąt funtów szterlingów osiem pensów

pięćdziesiąt juanów
pięćdziesiąt juanów osiem jiao
pięćdziesiąt juanów osiem fenów

Natomiast jeśli chcemy zapisać słownie obcą walutę w obcym języku, korzystamy z funkcji =MONEYTEXT(50;"KOD_WALUTY";"KOD_KRAJU"). W ten oto sposób możemy zapisać zdanie "pięćdziesiąt funtów szterlingów" w języku mandaryńskim, lub też zdanie "pięćdziesiąt juanów" możemy zapisać po angielsku.

Kod:
=MONEYTEXT(50;"GBP";"zh-ZH")
=MONEYTEXT(50;"CNY";"en-GB")

Wynik:
五十英镑
fifty Chinese yuan

.

8 komentarzy:

Anonimowy pisze...

Ale, chyba w standardowym zestawie funkcji opisanej nie ma. Przynajmniej u Mnie nie znalazłem (Win XP + Oo 3.2).
Calc zgłasza błąd.

Mateusz Zasuwik pisze...

Numbertext to dodatek. Napisałem o tym na początku wpisu.

Andrzej pisze...

No niby działa, ale dlaczego domyślnie zwraca wynik po chińsku? ;)

Anonimowy pisze...

Bardzo mi pomogłeś tym artykułem!
Dziękuję!

Spojler pisze...

Działa rewelacyjnie :D

Anonimowy pisze...

piękna sprawa. Znaczne ułatwienie. Dzięki:)

Anonimowy pisze...

gdy wybieram tą funkcję z okna jest ok ale gdy zatwierdzam nic nie działa wyskakuje mi tylko funkcja bez efektu?

Anonimowy pisze...

- działa gdy chcemy przetłumaczyć liczbę pobieraną z zewnętrznego okna np:
=MONEYTEXT(H15) lub =NUMBERTEXT(H15)

- niestety NIE DZIAŁA gdy liczba ma być pobrana z zewnętrznego okna i jednocześnie chcemy tłumaczyć na obcy język np:
=MONEYTEXT(H15;"en-GB")

- nie działa dla SEK (korona szwedzka) np:
=MONEYTEXT(H15;"SEK")