
Gdy niespełna dwa lata popełniłem na blogu wpis Excel formuła do zmiany kwoty na tekst (kwota słownie bez użycia makr) nie wiedziałem, że moja wtyczka będzie się cieszyła tak dużym powodzeniem. Jakiś czas temu ktoś zadał pytanie, czy nie dałoby się przerobić wtyczki, aby zwracała kwotę słownie, ale w języku angielskim. I tutaj mam dobrą wiadomość: w końcu się zmobilizowałem i tak oto powstała owa wtyczka. Zaleta z jej stosowania jest taka, że nie trzeba używać makr, jej wadą jest konieczność bycia połączonym z Internetem.
Jak działa wtyczka? Otóż w Excelu 2013 (i nowszych) istnieje funkcja WEBSERVICE, która wstawia do komórki treść strony internetowej. Moja usługa działa w ten sposób, że wywołując odpowiedni adres URL z parametrem którym jest liczba zwracany jest tekst będący słownym odpowiednikiem owej liczby.

Przykładowo wpisując do komórki formułę:
=WEBSERVICE("https://api.officeblog.pl/inwords.php?amount=4321")
Pojawi się w niej tekst:
four thousand three hundred twenty-one
Uwaga: liczba nie może być większa od 999 999 999 999 (999 miliardów z osadem; tak więc jeśli nie jesteś mieszkańcem Zimbabwe pewnie to ograniczenie Ci nie przeszkadza).
Aby w danej komórce pojawiła się kwota słownie po angielsku z zawartości komórki B1 należy wpisać następującą formułę:
=WEBSERVICE("https://api.officeblog.pl/inwords.php?amount="&B1)

Dodatkowe parametry
Domyślnie zwracana jest goła liczba bez żadnych oznaczeń walut, części ułamkowe, groszy itp. Natomiast dodając zmienną format=X możemy wpłynąć na wygląd zwracanej liczby:
format=1
Zwracana jest liczba wraz symbolem waluty (domyślnie zl)
Przykład:
https://api.officeblog.pl/inwords.php?format=1&amount=1234,30
daje nam
one thousand two hundred thirty-four zl thirty
Dodając parametr currency można zmienić symbol waluty np.
https://api.officeblog.pl/inwords.php?format=1¤cy=EUR&amount=123
zwróci nam
one hundred twenty-three EUR
format=2
Tutaj sprawa ma się podobnie, z tym, że symbol waluty jest odmieniany (tj. jeśli liczba jest większa od 1 to jest dodawane s)
https://api.officeblog.pl/inwords.php?format=2&amount=1
zwróci nam
one zloty
Ale
https://api.officeblog.pl/inwords.php?format=2&amount=12
zwróci nam już
twelve zlotys
Można też dodać jako parametr symbol waluty (oraz „jej groszy”) są to parametry currency i currency2 przykład:
https://api.officeblog.pl/inwords.php?format=2¤cy=euro¤cy2=eruocent&amount=12,05
daje nam
twelve euros five eruocents
format=3
Tutaj jest podawana liczba (wraz z opcjonalnym symbolem waluty) a grosze są podawane (o ile są) w postaci ułamka x/100 np.
https://api.officeblog.pl/inwords.php?format=3&amount=12,05
daje nam
twelve zlotys 05/100
Możemy też w parametrze currency podać własne oznaczenie waluty
https://api.officeblog.pl/inwords.php?format=3¤cy=euro&amount=12,05
zwraca
twelve euros 05/100
Krótka i długa skala
W krajach europejskich 1000 milionów to miliard. I tak domyślnie moja usługa się zachowuje tj. wywołując adres URL:
https://api.officeblog.pl/inwords.php?amount=2600000000
otrzymamy wynik:
two milliard six hundred million
Natomiast w USA 1000 milionów to bilion (aby było ciekawiej w krajach europejskich bilion to jest milion milionów). Stąd też powstają różne błędy gdy tłumacz tłumaczy tekst z języka angielskiego ale nie ma świadomości czy autor tekstu posługiwał się skalą długą (większość krajów europejskich) czy krótką (m.in. USA).
Jeśli chcesz, aby moja usługa zwracała kwotę słownie używając skali krótkiej (czyli zamiast milliard zwracała słowo billion należy dodać do adresu url parametr short=1). Oto przykład:
https://api.officeblog.pl/inwords.php?short=1&amount=2600000000
Zwraca:
two billion six hundred milion
LibreOffice Calc
W przypadku pakietu LibreOffice odpowiednikiem funkcji WEBSERVICE jest funkcja USŁ.INTER
Arkusze Google
Odpowiednikiem funkcji WEBSERVICE jest funkcja IMPORTDATA
FreeOffice PlanMaker
Nie znalazłem funkcji, która pobiera dane z Internetu
MS Office dla MacOS
Nie znalazłem funkcji, która pobiera dane z Internetu
WPS Office
Nie znalazłem funkcji, która pobiera dane z Internetu