daily pastebin goal
61%
SHARE
TWEET

kwota słownie w Excelu - źródło

a guest Mar 26th, 2014 22 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. $liczba = "A1";
  2.  
  3. # to jest funkcją, żeby w przyszłości móc zmienić na wersję zobfuskowaną
  4. sub jezeli {
  5.         my $warunek = shift;
  6.         my $tak = shift;
  7.         my $nie = shift;
  8.         return "JEŻELI($warunek;$tak;$nie)";
  9. }
  10.  
  11. sub ostatnie_dwie_cyfry {
  12.         my $liczba = shift;
  13.         return "PRAWY(TEKST($liczba;\"00\");2)";
  14. }
  15.  
  16. sub ostatnia_cyfra {
  17.         my $liczba = shift;
  18.         return "PRAWY(TEKST($liczba;\"0\");1)+0";
  19. }
  20.  
  21. sub przedostatnia_cyfra {
  22.         my $liczba = shift;
  23.         my $ostatnie_dwie_cyfry = ostatnie_dwie_cyfry($liczba);
  24.         return "LEWY($ostatnie_dwie_cyfry;1)+0";
  25. }
  26.  
  27. sub mnoga {
  28.         my $liczba = shift;
  29.         my $jeden = shift;
  30.         my $trzy = shift;
  31.         my $siedem = shift;
  32.         my $ostatnia = ostatnia_cyfra($liczba);
  33.         my $przedostatnia = przedostatnia_cyfra($liczba);
  34.         my $czy_jeden = "$liczba=1";
  35.         my $czy_zgody = "ORAZ($ostatnia>=2;$ostatnia<=4;$przedostatnia<>1)";
  36.         my $numer_formy = "($czy_jeden)+($czy_zgody)*2+1";
  37.         my $formy = "{\"$siedem\";\"$jeden\";\"$trzy\"}";
  38.         return "INDEKS($formy;$numer_formy)";
  39. }
  40.  
  41. sub dwucyfrowa_slownie {
  42.         my $liczba = shift;
  43.         my $liczebniki_1_19 = '{"";"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"}';
  44.         my $ostatnie_dwie_cyfry = ostatnie_dwie_cyfry($liczba);
  45.         my $liczebnik_do_19 = "INDEKS($liczebniki_1_19;$ostatnie_dwie_cyfry+1)";
  46.         my $ostatnia = ostatnia_cyfra($liczba);
  47.         my $przedostatnia = przedostatnia_cyfra($liczba);
  48.         my $liczebniki_20_90 = '{"dwadzieścia";"trzydzieści";"czterdzieści";"pięćdziesiąt";"sześćdziesiąt";"siedemdziesiąt";"osiemdziesiąt";"dziewięćdziesiąt"}';
  49.         my $liczebniki_0_9 = '{"";"jeden";"dwa";"trzy";"cztery";"pięć";"sześć";"siedem";"osiem";"dziewięć"}';
  50.         my $dziesci = "INDEKS($liczebniki_20_90;$przedostatnia-1)";
  51.         my $iles = "INDEKS($liczebniki_0_9;$ostatnia+1)";
  52.         my $dziesciiles = "$dziesci\&\" \"\&$iles";
  53.         return jezeli("$ostatnie_dwie_cyfry+0<20", $liczebnik_do_19, $dziesciiles);
  54. }
  55.  
  56. sub dwucyfrowa_lub_0_slownie {
  57.         my $liczba = shift;
  58.         return jezeli("$liczba=0", '"zero"', dwucyfrowa_slownie($liczba));
  59. }
  60.  
  61. sub trzycyfrowa_slownie {
  62.         my $liczba = shift;
  63.         my $liczebnik_do_99 = dwucyfrowa_slownie($liczba);
  64.         my $liczebniki_100_900 = '{"sto";"dwieście";"trzysta";"czterysta";"pięćset";"sześćset";"siedemset";"osiemset";"dziewięćset"}';
  65.         my $cyfra_setek = "LEWY(TEKST($liczba;\"000\");1)+0";
  66.         my $ewentualne_setki = "INDEKS($liczebniki_100_900;$cyfra_setek)";
  67.         my $setki = jezeli("$cyfra_setek>0", "$ewentualne_setki&\" \"", '""');
  68.         return "$setki&$liczebnik_do_99";
  69. }
  70.  
  71. sub szesciocyfrowa_slownie {
  72.         my $liczba = shift;
  73.         my $sformatowana = "TEKST($liczba;\"000000\")";
  74.         my $grupa_1 = "PRAWY($sformatowana;3)+0";
  75.         my $grupa_2 = "LEWY($sformatowana;3)+0";
  76.         my $liczebnik_1 = trzycyfrowa_slownie($grupa_1);
  77.         my $ewentualny_liczebnik_2 = trzycyfrowa_slownie($grupa_2);
  78.         my $ewentualne_tysiace = mnoga($grupa_2, "tysiąc", "tysiące", "tysięcy");
  79.         my $liczebnik_2 = jezeli("$grupa_2>1", $ewentualny_liczebnik_2, '""') . '&" "&' . jezeli("$grupa_2>0", $ewentualne_tysiace, '""');
  80.         return "$liczebnik_2\&\" \"\&$liczebnik_1";
  81. }
  82.  
  83. # rozbudowana wersja funkcji szesciocyfrowa_slownie
  84. # nie korzysta z funkcji szesciocyfrowa_slownie
  85. sub dwunastocyfrowa_slownie {
  86.         my $liczba = shift;
  87.         my $sformatowana = "TEKST($liczba;\"000000000000\")";
  88.         my $grupa_1 = "FRAGMENT.TEKSTU($sformatowana;10;3)+0";
  89.         my $grupa_2 = "FRAGMENT.TEKSTU($sformatowana;7;3)+0";
  90.         my $grupa_3 = "FRAGMENT.TEKSTU($sformatowana;4;3)+0";
  91.         my $grupa_4 = "FRAGMENT.TEKSTU($sformatowana;1;3)+0";
  92.         my $liczebnik_1 = trzycyfrowa_slownie($grupa_1);
  93.         my $ewentualny_liczebnik_2 = trzycyfrowa_slownie($grupa_2);
  94.         my $ewentualny_liczebnik_3 = trzycyfrowa_slownie($grupa_3);
  95.         my $ewentualny_liczebnik_4 = trzycyfrowa_slownie($grupa_4);
  96.         my $ewentualne_tysiace = mnoga($grupa_2, "tysiąc", "tysiące", "tysięcy");
  97.         my $ewentualne_miliony = mnoga($grupa_3, "milion", "miliony", "milionów");
  98.         my $ewentualne_miliardy = mnoga($grupa_4, "miliard", "miliardy", "miliardów");
  99.         my $liczebnik_2 = jezeli("$grupa_2>1", $ewentualny_liczebnik_2, '""') . '&" "&' . jezeli("$grupa_2>0", $ewentualne_tysiace, '""');
  100.         my $liczebnik_3 = jezeli("$grupa_3>1", $ewentualny_liczebnik_3, '""') . '&" "&' . jezeli("$grupa_3>0", $ewentualne_miliony, '""');
  101.         my $liczebnik_4 = jezeli("$grupa_4>1", $ewentualny_liczebnik_4, '""') . '&" "&' . jezeli("$grupa_4>0", $ewentualne_miliardy, '""');
  102.         return "$liczebnik_4\&\" \"\&$liczebnik_3\&\" \"\&$liczebnik_2\&\" \"\&$liczebnik_1";
  103. }
  104.  
  105. sub liczba_slownie {
  106.         my $liczba = shift;
  107.         return jezeli("$liczba=0", '"zero"', dwunastocyfrowa_slownie($liczba));
  108. }
  109.  
  110. $liczebnik_zl = liczba_slownie("ZAOKR.DO.CAŁK($liczba)");
  111. $zl = mnoga("ZAOKR.DO.CAŁK($liczba)", "złoty", "złote", "złotych");
  112. $grosze = "PRAWY(TEKST(ZAOKR.DO.CAŁK($liczba*100)/100;\"0,00\");2)+0";
  113. $liczebnik_gr = dwucyfrowa_lub_0_slownie($grosze);
  114. $gr = mnoga($grosze, "grosz", "grosze", "groszy");
  115.  
  116. print "=USUŃ.ZBĘDNE.ODSTĘPY($liczebnik_zl\&\" \"&$zl&\" \"\&$liczebnik_gr\&\" \"\&$gr)";
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top