kwota_slownie-bez-vba

Jak zapisać kwotę słownie bez użycia VBA

Jeśli w komórce A1 mamy kwotę zapisaną liczbą (np. 131517,45), a chcemy w innej komórce wyświetlić ją zapisaną słownie (np. sto trzydzieści jeden tysięcy pięćset siedemnaście złotych czterdzieści pięć groszy), możemy użyć do tego tej formuły:

=USUŃ.ZBĘDNE.ODSTĘPY(JEŻELI(ZAOKR.DO.CAŁK(A1)=0;"zero";JEŻELI(LEWY(TEKST(ZAOKR.DO.CAŁK(A1);"000000");3)+0>1;JEŻELI(LEWY(TEKST(LEWY(TEKST(ZAOKR.DO.CAŁK(A1);"000000");3)+0;"000");1)+0>0;INDEKS({"sto";"dwieście";"trzysta";"czterysta";"pięćset";"sześćset";"siedemset";"osiemset";"dziewięćset"};LEWY(TEKST(LEWY(TEKST(ZAOKR.DO.CAŁK(A1);"000000");3)+0;"000");1)+0)&" ";"")&JEŻELI(PRAWY(TEKST(LEWY(TEKST(ZAOKR.DO.CAŁK(A1);"000000");3)+0;"00");2)+0<20;INDEKS({"";"jeden";"dwa";"trzy";"cztery";"pięć";"sześć";"siedem";"osiem";"dziewięć";"dziesięć";"jedenaście";"dwanaście";"trzynaście";"czternaście";"piętnaście";"szesnaście";"siedemnaście";"osiemnaście";"dziewiętnaście"};PRAWY(TEKST(LEWY(TEKST(ZAOKR.DO.CAŁK(A1);"000000");3)+0;"00");2)+1);INDEKS({"dwadzieścia";"trzydzieści";"czterdzieści";"pięćdziesiąt";"sześćdziesiąt";"siedemdziesiąt";"osiemdziesiąt";"dziewięćdziesiąt"};LEWY(PRAWY(TEKST(LEWY(TEKST(ZAOKR.DO.CAŁK(A1);"000000");3)+0;"00");2);1)+0-1)&" "&INDEKS({"";"jeden";"dwa";"trzy";"cztery";"pięć";"sześć";"siedem";"osiem";"dziewięć"};PRAWY(TEKST(LEWY(TEKST(ZAOKR.DO.CAŁK(A1);"000000");3)+0;"0");1)+0+1));"")&" "&JEŻELI(LEWY(TEKST(ZAOKR.DO.CAŁK(A1);"000000");3)+0>0;INDEKS({"tysięcy";"tysiąc";"tysiące"};(LEWY(TEKST(ZAOKR.DO.CAŁK(A1);"000000");3)+0=1)+(ORAZ(PRAWY(TEKST(LEWY(TEKST(ZAOKR.DO.CAŁK(A1);"000000");3)+0;"0");1)+0>=2;PRAWY(TEKST(LEWY(TEKST(ZAOKR.DO.CAŁK(A1);"000000");3)+0;"0");1)+0<=4;LEWY(PRAWY(TEKST(LEWY(TEKST(ZAOKR.DO.CAŁK(A1);"000000");3)+0;"00");2);1)+0<>1))*2+1);"")&" "&JEŻELI(LEWY(TEKST(PRAWY(TEKST(ZAOKR.DO.CAŁK(A1);"000000");3)+0;"000");1)+0>0;INDEKS({"sto";"dwieście";"trzysta";"czterysta";"pięćset";"sześćset";"siedemset";"osiemset";"dziewięćset"};LEWY(TEKST(PRAWY(TEKST(ZAOKR.DO.CAŁK(A1);"000000");3)+0;"000");1)+0)&" ";"")&JEŻELI(PRAWY(TEKST(PRAWY(TEKST(ZAOKR.DO.CAŁK(A1);"000000");3)+0;"00");2)+0<20;INDEKS({"";"jeden";"dwa";"trzy";"cztery";"pięć";"sześć";"siedem";"osiem";"dziewięć";"dziesięć";"jedenaście";"dwanaście";"trzynaście";"czternaście";"piętnaście";"szesnaście";"siedemnaście";"osiemnaście";"dziewiętnaście"};PRAWY(TEKST(PRAWY(TEKST(ZAOKR.DO.CAŁK(A1);"000000");3)+0;"00");2)+1);INDEKS({"dwadzieścia";"trzydzieści";"czterdzieści";"pięćdziesiąt";"sześćdziesiąt";"siedemdziesiąt";"osiemdziesiąt";"dziewięćdziesiąt"};LEWY(PRAWY(TEKST(PRAWY(TEKST(ZAOKR.DO.CAŁK(A1);"000000");3)+0;"00");2);1)+0-1)&" "&INDEKS({"";"jeden";"dwa";"trzy";"cztery";"pięć";"sześć";"siedem";"osiem";"dziewięć"};PRAWY(TEKST(PRAWY(TEKST(ZAOKR.DO.CAŁK(A1);"000000");3)+0;"0");1)+0+1)))&" "&INDEKS({"złotych";"złoty";"złote"};(ZAOKR.DO.CAŁK(A1)=1)+(ORAZ(PRAWY(TEKST(ZAOKR.DO.CAŁK(A1);"0");1)+0>=2;PRAWY(TEKST(ZAOKR.DO.CAŁK(A1);"0");1)+0<=4;LEWY(PRAWY(TEKST(ZAOKR.DO.CAŁK(A1);"00");2);1)+0<>1))*2+1)&" "&JEŻELI(PRAWY(TEKST(ZAOKR.DO.CAŁK(A1*100)/100;"0,00");2)+0=0;"zero";JEŻELI(PRAWY(TEKST(PRAWY(TEKST(ZAOKR.DO.CAŁK(A1*100)/100;"0,00");2)+0;"00");2)+0<20;INDEKS({"";"jeden";"dwa";"trzy";"cztery";"pięć";"sześć";"siedem";"osiem";"dziewięć";"dziesięć";"jedenaście";"dwanaście";"trzynaście";"czternaście";"piętnaście";"szesnaście";"siedemnaście";"osiemnaście";"dziewiętnaście"};PRAWY(TEKST(PRAWY(TEKST(ZAOKR.DO.CAŁK(A1*100)/100;"0,00");2)+0;"00");2)+1);INDEKS({"dwadzieścia";"trzydzieści";"czterdzieści";"pięćdziesiąt";"sześćdziesiąt";"siedemdziesiąt";"osiemdziesiąt";"dziewięćdziesiąt"};LEWY(PRAWY(TEKST(PRAWY(TEKST(ZAOKR.DO.CAŁK(A1*100)/100;"0,00");2)+0;"00");2);1)+0-1)&" "&INDEKS({"";"jeden";"dwa";"trzy";"cztery";"pięć";"sześć";"siedem";"osiem";"dziewięć"};PRAWY(TEKST(PRAWY(TEKST(ZAOKR.DO.CAŁK(A1*100)/100;"0,00");2)+0;"0");1)+0+1)))&" "&INDEKS({"groszy";"grosz";"grosze"};(PRAWY(TEKST(ZAOKR.DO.CAŁK(A1*100)/100;"0,00");2)+0=1)+(ORAZ(PRAWY(TEKST(PRAWY(TEKST(ZAOKR.DO.CAŁK(A1*100)/100;"0,00");2)+0;"0");1)+0>=2;PRAWY(TEKST(PRAWY(TEKST(ZAOKR.DO.CAŁK(A1*100)/100;"0,00");2)+0;"0");1)+0<=4;LEWY(PRAWY(TEKST(PRAWY(TEKST(ZAOKR.DO.CAŁK(A1*100)/100;"0,00");2)+0;"00");2);1)+0<>1))*2+1))

Formuła działa dla liczb od 0 do 999999,99. Była testowana pod Excelem 2010.

po angielsku

Oto ta sama formuła po angielsku (z polskimi ustawieniami lokalnymi - czyli z argumentami rozdzielanymi średnikami):

=TRIM(IF(INT(A1)=0;"zero";IF(LEFT(TEXT(INT(A1);"000000");3)+0>1;IF(LEFT(TEXT(LEFT(TEXT(INT(A1);"000000");3)+0;"000");1)+0>0;INDEX({"sto";"dwieście";"trzysta";"czterysta";"pięćset";"sześćset";"siedemset";"osiemset";"dziewięćset"};LEFT(TEXT(LEFT(TEXT(INT(A1);"000000");3)+0;"000");1)+0)&" ";"")&IF(RIGHT(TEXT(LEFT(TEXT(INT(A1);"000000");3)+0;"00");2)+0<20;INDEX({"";"jeden";"dwa";"trzy";"cztery";"pięć";"sześć";"siedem";"osiem";"dziewięć";"dziesięć";"jedenaście";"dwanaście";"trzynaście";"czternaście";"piętnaście";"szesnaście";"siedemnaście";"osiemnaście";"dziewiętnaście"};RIGHT(TEXT(LEFT(TEXT(INT(A1);"000000");3)+0;"00");2)+1);INDEX({"dwadzieścia";"trzydzieści";"czterdzieści";"pięćdziesiąt";"sześćdziesiąt";"siedemdziesiąt";"osiemdziesiąt";"dziewięćdziesiąt"};LEFT(RIGHT(TEXT(LEFT(TEXT(INT(A1);"000000");3)+0;"00");2);1)+0-1)&" "&INDEX({"";"jeden";"dwa";"trzy";"cztery";"pięć";"sześć";"siedem";"osiem";"dziewięć"};RIGHT(TEXT(LEFT(TEXT(INT(A1);"000000");3)+0;"0");1)+0+1));"")&" "&IF(LEFT(TEXT(INT(A1);"000000");3)+0>0;INDEX({"tysięcy";"tysiąc";"tysiące"};(LEFT(TEXT(INT(A1);"000000");3)+0=1)+(AND(RIGHT(TEXT(LEFT(TEXT(INT(A1);"000000");3)+0;"0");1)+0>=2;RIGHT(TEXT(LEFT(TEXT(INT(A1);"000000");3)+0;"0");1)+0<=4;LEFT(RIGHT(TEXT(LEFT(TEXT(INT(A1);"000000");3)+0;"00");2);1)+0<>1))*2+1);"")&" "&IF(LEFT(TEXT(RIGHT(TEXT(INT(A1);"000000");3)+0;"000");1)+0>0;INDEX({"sto";"dwieście";"trzysta";"czterysta";"pięćset";"sześćset";"siedemset";"osiemset";"dziewięćset"};LEFT(TEXT(RIGHT(TEXT(INT(A1);"000000");3)+0;"000");1)+0)&" ";"")&IF(RIGHT(TEXT(RIGHT(TEXT(INT(A1);"000000");3)+0;"00");2)+0<20;INDEX({"";"jeden";"dwa";"trzy";"cztery";"pięć";"sześć";"siedem";"osiem";"dziewięć";"dziesięć";"jedenaście";"dwanaście";"trzynaście";"czternaście";"piętnaście";"szesnaście";"siedemnaście";"osiemnaście";"dziewiętnaście"};RIGHT(TEXT(RIGHT(TEXT(INT(A1);"000000");3)+0;"00");2)+1);INDEX({"dwadzieścia";"trzydzieści";"czterdzieści";"pięćdziesiąt";"sześćdziesiąt";"siedemdziesiąt";"osiemdziesiąt";"dziewięćdziesiąt"};LEFT(RIGHT(TEXT(RIGHT(TEXT(INT(A1);"000000");3)+0;"00");2);1)+0-1)&" "&INDEX({"";"jeden";"dwa";"trzy";"cztery";"pięć";"sześć";"siedem";"osiem";"dziewięć"};RIGHT(TEXT(RIGHT(TEXT(INT(A1);"000000");3)+0;"0");1)+0+1)))&" "&INDEX({"złotych";"złoty";"złote"};(INT(A1)=1)+(AND(RIGHT(TEXT(INT(A1);"0");1)+0>=2;RIGHT(TEXT(INT(A1);"0");1)+0<=4;LEFT(RIGHT(TEXT(INT(A1);"00");2);1)+0<>1))*2+1)&" "&IF(RIGHT(TEXT(INT(A1*100)/100;"0,00");2)+0=0;"zero";IF(RIGHT(TEXT(RIGHT(TEXT(INT(A1*100)/100;"0,00");2)+0;"00");2)+0<20;INDEX({"";"jeden";"dwa";"trzy";"cztery";"pięć";"sześć";"siedem";"osiem";"dziewięć";"dziesięć";"jedenaście";"dwanaście";"trzynaście";"czternaście";"piętnaście";"szesnaście";"siedemnaście";"osiemnaście";"dziewiętnaście"};RIGHT(TEXT(RIGHT(TEXT(INT(A1*100)/100;"0,00");2)+0;"00");2)+1);INDEX({"dwadzieścia";"trzydzieści";"czterdzieści";"pięćdziesiąt";"sześćdziesiąt";"siedemdziesiąt";"osiemdziesiąt";"dziewięćdziesiąt"};LEFT(RIGHT(TEXT(RIGHT(TEXT(INT(A1*100)/100;"0,00");2)+0;"00");2);1)+0-1)&" "&INDEX({"";"jeden";"dwa";"trzy";"cztery";"pięć";"sześć";"siedem";"osiem";"dziewięć"};RIGHT(TEXT(RIGHT(TEXT(INT(A1*100)/100;"0,00");2)+0;"0");1)+0+1)))&" "&INDEX({"groszy";"grosz";"grosze"};(RIGHT(TEXT(INT(A1*100)/100;"0,00");2)+0=1)+(AND(RIGHT(TEXT(RIGHT(TEXT(INT(A1*100)/100;"0,00");2)+0;"0");1)+0>=2;RIGHT(TEXT(RIGHT(TEXT(INT(A1*100)/100;"0,00");2)+0;"0");1)+0<=4;LEFT(RIGHT(TEXT(RIGHT(TEXT(INT(A1*100)/100;"0,00");2)+0;"00");2);1)+0<>1))*2+1))