
Czasami istnieje potrzeba zapisania pewnej kwoty słownie. Przykładowo osoby prowadzące działalność gospodarczą, które wystawiają maksymalnie kilka faktur miesięcznie bardzo często używają do tego celu Excela. Jest to bardzo wygodne rozwiązanie, ale w Excelu nie ma funkcji, która daną liczbę zamienia na jej słowny odpowiednik. Gdy wystawiasz jedną fakturę miesięcznie, nie jest problemem ręczne wpisanie kwoty słownie, ale wystawiając kilka faktur może to już być nieco uciążliwe.
Z pewnością znalazłeś na niejednej stronie proste makro, które dodaje do funkcji Excela niestandardową funkcję o nazwie np. Slownie. Ale nie zawsze możemy (lub nie chcemy) używać makr.
W tym celu opracowałem inne rozwiązanie. Otóż w Excelu od wersji 2013 w górę istnieje funkcja WEBSERVICE. Funkcja ta zwraca zawartość strony internetowej. Tak więc napisałem w języku PHP prostą stronę, która po wywołaniu z odpowiednim parametrem (kwota liczbowo) jako treść zwraca kwotę słownie. Przykładowo wpisując w przeglądarce internetowej adres:
https://api.officeblog.pl/slownie.php?format=2&kwota=123
Zobaczymy tekst: sto dwadzieścia trzy złote

W adresie URL owej usługi mamy dwa parametry. Jeden z nich to kwota. Tu nie muszę chyba nic tłumaczyć: jest to liczba, którą chcemy zamienić na słowny odpowiednik. Liczba może być poprzedzona znakiem minus. Aby oddzielić część całkowitą od części ułamkowej można użyć przecinka, lub kropki.
Z kolei parametr format jest opcjonalny (domyślnie 0). Mówi on w jaki sposób ma zostać sformatowana liczba. Oto dozwolone wartości tego parametru
- 0 – zwraca liczbę słownie bez "symbolu waluty". Jeśli liczba zawiera część ułamkową, to owa część ułamkowa jest ignorowana
- 1 – zwraca liczbę słownie używając oznaczeń waluty zł i gr
- 2 – zwraca liczbę słownie zwracając pełne słowo złoty (oczywiście odpowiednio odmienione) i pełne słowo groszy (też odmienione).
- [NOWOŚĆ wrzesień 2021] 3 – zwraca liczbę słownie zwracając pełne słowo złoty (oczywiście odpowiednio odmienione) i grosze w postaci ułamka np. 21/100.
[NOWOŚĆ marzec 2022] jeśli tekst zwrócony przez moją usługę zawiera "krzaczki" (bo np. jakiś egzotyczny program nie rozpoznaje poprawnie kodowania) to możesz spróbować dodać opcjonalny parametr BOM=1, wtedy zostanie zwrócony tekst wraz z nagłówkiem BOM informującym o kodowaniu tekstu. Czyli przykładowy adres URL będzie miał wtedy postać (w przypadku Excela ten nagłówek jest niepotrzebny)
https://api.officeblog.pl/slownie.php?format=2&BOM=1&kwota=123
Być może nieco się rozgadałem, ale użycie mojej usługi jest banalne. Po prostu wpisz do komórki A1 jakąś liczbę a następnie w innej komórce wpisz następującą formułę:
=WEBSERVICE("https://api.officeblog.pl/slownie.php?format=2&kwota="&A1)
Pobierz przykładowy arkusz demonstrujący opisywane zagadnienie
Excel dla MacOS
Niestety, ale Excel w wersji dla MacOS (usługa subskrypcyjna Office 365, stan na czerwiec 2020) nie obsługuje funkcji WEBSERVICE.
Arkusze google
Korzystasz z usługi Google Docs? Tutaj funkcja WEBSERVICE ma nazwę IMPORTDATA
=IMPORTDATA("https://api.officeblog.pl/slownie.php?format=2&kwota="&A1)
LibreOffice Calc
W przypadku LiberOffice Calc funkcja pobierająca dane z internetu nazywa się USŁ.INTER. Czyli tak wygląda nasza formuła:
=USŁ.INTER("https://api.officeblog.pl/slownie.php?format=2&kwota="&A1)
WPS Office
Nie znalazłem funkcji, która pobiera dane z internetu
Word
Jeśli np. wystawiasz faktury w Wordzie to za pomocą specjalnego pola IncludeText również możesz skorzystać z mojego rozwiązania. Zagadnieniu temu poświęciłem osobny wpis.
Kwota słownie po angielsku
Istnieje bliźniacza usługa zwracająca kwotę słownie w języku angielskim.
Fajny trik, ale wymagane jest połączenie z internetem 🙁
Działa w LibreOffice, dzięki! 🙂
Dziękuję 🙂 ratunek w potrzebie! Po użyciu na dużej bazie danych wyłapałam, że z kwotą "jedenaście tysięcy" jest inaczej – formuła wyrzuca pisane razem, czyli "jedenaścietysięcy". Pozdrawiam serdecznie 🙂
Dziękuję za sygnał, błąd został poprawiony
Fajne, dziękuję.
super rozwiązanie! jestem wdzięczny. Mała uwaga, przy formacie "2" nie odmienia słowa "groszy" dla liczb po przecinku większych niż 20. Np. 0,22 odmieni …dwadzieścia dwa groszy.
Dzięki za info, poprawiłem usterkę
Ogromna prośba, czy możesz dodać jeszcze jeden format? Dla pozycji groszy ustawić formatkę 00/100.
Stokrotne dzięki 🙂
Dzięki za sugestię. Dodałem to jako nowy parametr format=3
Genialnie, że udało się dodać ten format zapisu.
Dla mnie bomba, śmiga jak ta lala, dzięki! 🙂
rewelacja!!!
Dziękuję bardzo. Naprawdę super działa w Excelu! A czy do Worda też można prosić o rozwiązanie?
Hej, a nie masz może takiej wersji po angielsku? 🙂
Mając nadmiar wolnego czasu skleciłem coś takiego: https://www.officeblog.pl/inwords-kwota-slownie-po-angielsku-bez-uzycia-makr/
Hej,
Czy jest możliwośc dodania przecinku miedzy złotówkami, a groszami?
Dziękuję za sugestię, faktycznie w formie słownej gdy mamy słownie zapisane grosze to powinien być przecinek po złotówkach. Zmiana została wprowadzona.
Hejka, import data na google sheets przestał działać =IMPORTDATA("https://api.officeblog.pl/slownie.php?format=2&kwota="&A1)
Witam,
Od kilku dni w komórce gdzie pojawia się kwota słownie tekst przeskakuje na sam dół komórki (komórka jest scalona z trzech wierszy) tak jakby do trzeciego wiersza. żadne formatowanie niestety nie pomaga. Po zamianie na plik pdf w pierwszych dwóch pominiętych wierszach pojawia się znak zapytania, a tekst słownie dopiero w trzecim wierszu. Co może być nie tak ?
Dziękuję za zgłoszenie błędu, usterka została naprawiona
Strona z funkcji chyba już nie działa?