Transformare Numere In Litere
Last Updated: Jan 30 2024 17:09, Started by
michaelady
, Oct 10 2004 00:52
·
1
#37
Posted 15 April 2008 - 23:55
Din pacate e vorba de un chitantier pt asociatia de locatari (am terminat carnetul de chitante) si trebuie sa pun obligatoriu si suma in litere. Am facut restul "chitantierului" dar am ramas blocat la functia asta. In cel mai rau caz, completez manual, ca n-am ce face :(
P.S: Mi-a placut scriptul asta dar din cate stiu nu am cum sa fac din php (daca as avea acces la sursa) macro pt excel. Chitantier.zip 6.77K 240 downloads |
#38
Posted 15 April 2008 - 23:59
Am facut eu unu complet pentru OP-uri (ordine de plata) da-l am la munca, ramane pe maine...
|
#39
Posted 16 April 2008 - 08:22
Asta-i solutia, din cate tin minte m-am ocupat de toate exceptiile.
exemple de mai sus le rezolva asa: - 23.43 ->douazecisitreileisipatruzecisitreibani - 100.01 ->osutaleisiunban - 99999999.99 -> nouazecisinouamilioanenouasutenouazecisinouamiinouasutenouazecisinoualeisinouaze cisinouabani (SP nu permite afisearea unui sir de caractere atat de lung) - 1000000000 -> valoare prea mare Banuiesc ca nu lucrati cu sume mai mari de atat :P Daca totusi se scrie suma asta, pentru un comision de nimic, 0,001% vin s-o scriu personal de mana. Succes. Option Explicit Public Numbers As Variant, Tens As Variant, Sutemii As Variant Sub SetNr() Sutemii = Array("zero", "una", "doua", "trei", "patru", "cinci", "sase", "sapte", "opt", "noua") Numbers = Array("zero", "unu", "doi", "trei", "patru", "cinci", "sase", "sapte", "opt", "noua") Tens = Array("", "", "douazeci", "treizeci", "patruzeci", "cincizeci", "saizeci", "saptezeci", "optzeci", "nouazeci") End Sub Function Litere(MyNumber As Double) As String Dim DecimalPosition As Integer, ValNo As Variant, StrNo As String, t1 As String, p As String, q As String, r As String Dim NumStr As String, n As Integer, Temp1 As String, a As String, b As String, c As String, f As String, NumStr1 As String, NumStr2 As String Dim NumStr3 As String, NumStr4 As String, NumStr5 As String, NumStr6 As String, NumStr7 As String, NumStr8 As String, NumStr9 As String, NumStr10 As String, NumStr11 As String Dim Virgula Dim x As String, z As String Dim Zecimale Dim Bani If Abs(MyNumber) > 999999999 Then Litere = "Valoare prea mare" Exit Function End If SetNr NumStr = Right("000000000" & Trim(Str(Int(Abs(MyNumber)))), 9) NumStr1 = Mid(NumStr, 9, 1) NumStr2 = Mid(NumStr, 8, 1) NumStr3 = Mid(NumStr, 7, 1) NumStr4 = Mid(NumStr, 6, 1) NumStr5 = Mid(NumStr, 5, 1) NumStr6 = Mid(NumStr, 4, 1) NumStr7 = Mid(NumStr, 3, 1) NumStr8 = Mid(NumStr, 2, 1) NumStr9 = Mid(NumStr, 1, 1) Zecimale = Trim(Str(MyNumber)) Virgula = InStr(Zecimale, ".") If Virgula > 0 Then Bani = Left(Mid(Zecimale, Virgula + 1) & _ "00", 2) Else: Bani = "00" End If NumStr10 = Mid(Bani, 1, 1) NumStr11 = Mid(Bani, 2, 1) 'Aici incepe partea cu xxx xxx xxx,99 If NumStr10 = 0 And NumStr11 = 1 Then x = "unban" z = x End If If NumStr10 = 0 And NumStr11 < 10 And NumStr11 > 1 Then x = Numbers(Left(NumStr11, 1)) z = x & "bani" End If If NumStr10 = 1 And NumStr11 = 0 Then x = "zece" z = x & "bani" End If If NumStr10 = 1 And NumStr11 = 1 Then x = "unsprezece" z = x & "bani" End If If NumStr10 = 1 And NumStr11 > 1 And NumStr11 <= 9 Then x = Numbers(Left(NumStr11, 1)) & "sprezece" z = x & "bani" End If If NumStr10 = 2 And NumStr11 = 0 Then x = "douazeci" z = x & "bani" End If If NumStr10 >= 2 Then If NumStr11 = 0 Then x = Tens(Left(NumStr10, 1)) z = x & "bani" Else x = Tens(Left(NumStr10, 1)) & "si" & Numbers(Left(NumStr11, 1)) z = x & "bani" End If End If ' aici incepe afisarea pentru xxx xxx 999 If NumStr1 = 0 And NumStr2 = 0 And NumStr3 = 0 Then a = "lei" p = a End If If NumStr1 = 1 And NumStr2 = 0 And NumStr3 = 0 Then a = "unleu" p = a End If If NumStr1 < 10 And NumStr1 > 1 And NumStr2 = 0 And NumStr3 = 0 Then a = Numbers(Left(NumStr1, 1)) p = a & "lei" End If If NumStr1 = 0 And NumStr2 = 1 And NumStr3 = 0 Then a = "zece" p = a & "lei" End If If NumStr1 = 1 And NumStr2 = 1 And NumStr3 = 0 Then a = "unsprezece" p = a & "lei" End If If NumStr2 = 1 And NumStr1 > 1 And NumStr1 <= 9 And NumStr3 = 0 Then a = Numbers(Left(NumStr1, 1)) & "sprezece" p = a & "lei" End If If NumStr1 = 0 And NumStr2 = 2 And NumStr3 = 0 Then a = "douazeci" p = a & "lei" End If If NumStr2 >= 2 And NumStr3 = 0 Then If NumStr1 = 0 Then a = Tens(Left(NumStr2, 1)) p = a & "lei" Else a = Tens(Left(NumStr2, 1)) & "si" & Numbers(Left(NumStr1, 1)) p = a & "lei" End If End If If NumStr1 = 0 And NumStr2 = 0 And NumStr3 = 1 Then a = "osuta" p = a & "lei" Else If NumStr1 > 0 And NumStr1 <= 9 And NumStr2 = 0 And NumStr3 = 1 Then a = "osuta" & Numbers(Left(NumStr1, 1)) p = a & "lei" End If If NumStr1 = 0 And NumStr2 = 1 And NumStr3 = 1 Then a = "osuta" & "zece" p = a & "lei" End If If NumStr1 = 1 And NumStr2 = 1 And NumStr3 = 1 Then a = "osuta" & "unsprezece" p = a & "lei" End If If NumStr1 > 1 And NumStr1 <= 9 And NumStr2 = 1 And NumStr3 = 1 Then a = "osuta" & Numbers(Left(NumStr1, 1)) & "sprezece" p = a & "lei" End If If NumStr3 = 1 And NumStr2 > 1 And NumStr2 <= 9 Then If NumStr1 = 0 Then a = "osuta" & Tens(Left(NumStr2, 1)) p = a & "lei" Else a = "osuta" & Tens(Left(NumStr2, 1)) & "si" & Numbers(Left(NumStr1, 1)) p = a & "lei" End If End If If NumStr3 = 2 And NumStr2 = 0 And NumStr1 = 0 Then a = "douasute" p = a & "lei" Else If NumStr1 <> 0 And NumStr2 = 0 And NumStr3 = 2 Then a = "douasute" & Numbers(Left(NumStr1, 1)) p = a & "lei" End If End If If NumStr1 = 0 And NumStr2 = 1 And NumStr3 = 2 Then a = "douasutezece" p = a & "lei" End If If NumStr1 = 1 And NumStr2 = 1 And NumStr3 = 2 Then a = "douasute" & "unsprezece" p = a & "lei" End If If NumStr1 > 1 And NumStr1 <= 9 And NumStr2 = 1 And NumStr3 = 2 Then a = "douasute" & Numbers(Left(NumStr1, 1)) & "sprezece" p = a & "lei" End If If NumStr3 = 2 And NumStr2 > 1 And NumStr2 <= 9 Then If NumStr1 = 0 Then a = "douasute" & Tens(Left(NumStr2, 1)) p = a & "lei" Else a = "douasute" & Tens(Left(NumStr2, 1)) & "si" & Numbers(Left(NumStr1, 1)) p = a & "lei" End If End If If NumStr1 = 0 And NumStr2 = 0 And NumStr3 > 2 And NumStr3 <= 9 Then a = Numbers(Left(NumStr3, 1)) & "sute" p = a & "lei" End If If NumStr1 > 0 And NumStr1 <= 9 And NumStr2 = 0 And NumStr3 > 2 And NumStr3 <= 9 Then a = Numbers(Left(NumStr3, 1)) & "sute" & Numbers(Left(NumStr1, 1)) p = a & "lei" End If If NumStr1 = 0 And NumStr2 = 1 And NumStr3 > 2 And NumStr3 <= 9 Then a = Numbers(Left(NumStr3, 1)) & "sute" & "zece" p = a & "lei" End If If NumStr1 = 1 And NumStr2 = 1 And NumStr3 > 2 And NumStr3 <= 9 Then a = Numbers(Left(NumStr3, 1)) & "sute" & "unsprezece" p = a & "lei" End If If NumStr1 > 1 And NumStr1 <= 9 And NumStr2 = 1 And NumStr3 > 2 And NumStr3 <= 9 Then a = Numbers(Left(NumStr3, 1)) & "sute" & Numbers(Left(NumStr1, 1)) & "sprezece" p = a & "lei" End If If NumStr2 <> 1 And NumStr2 <> 0 And NumStr3 > 2 And NumStr3 <= 9 Then If NumStr1 = 0 Then a = Numbers(Left(NumStr3, 1)) & "sute" & Tens(Left(NumStr2, 1)) p = a & "lei" Else a = Numbers(Left(NumStr3, 1)) & "sute" & Tens(Left(NumStr2, 1)) & "si" & Numbers(Left(NumStr1, 1)) p = a & "lei" End If End If End If ' aici se termina pentru xxx xxx 999 si incepe xxx 999 xxx If NumStr4 = 1 And NumStr5 = 0 And NumStr6 = 0 Then b = "omie" q = b End If If NumStr4 = 2 And NumStr5 = 0 And NumStr6 = 0 Then b = "doua" q = b & "mii" End If If NumStr4 < 10 And NumStr4 > 2 And NumStr5 = 0 And NumStr6 = 0 Then b = Sutemii(Left(NumStr4, 1)) q = b & "mii" End If If NumStr4 = 0 And NumStr5 = 1 And NumStr6 = 0 Then b = "zece" q = b & "mii" End If If NumStr4 = 1 And NumStr5 = 1 And NumStr6 = 0 Then b = "unsprezece" q = b & "mii" End If If NumStr5 = 1 And NumStr4 > 1 And NumStr4 <= 9 And NumStr6 = 0 Then b = Numbers(Left(NumStr4, 1)) & "sprezece" q = b & "mii" End If If NumStr4 = 0 And NumStr5 = 2 And NumStr6 = 0 Then b = "douazeci" q = b & "mii" End If If NumStr5 >= 2 And NumStr6 = 0 Then If NumStr4 = 0 Then b = Tens(Left(NumStr5, 1)) q = b & "mii" Else b = Tens(Left(NumStr5, 1)) & "si" & Sutemii(Left(NumStr4, 1)) q = b & "mii" End If End If If NumStr4 = 0 And NumStr5 = 0 And NumStr6 = 1 Then b = "osuta" q = b & "mii" Else If NumStr4 > 0 And NumStr4 <= 9 And NumStr5 = 0 And NumStr6 = 1 Then b = "osuta" & Sutemii(Left(NumStr4, 1)) q = b & "mii" End If If NumStr4 = 0 And NumStr5 = 1 And NumStr6 = 1 Then b = "osuta" & "zece" q = b & "mii" End If If NumStr4 = 1 And NumStr5 = 1 And NumStr6 = 1 Then b = "osuta" & "unsprezece" q = b & "mii" End If If NumStr4 > 1 And NumStr4 <= 9 And NumStr5 = 1 And NumStr6 = 1 Then b = "osuta" & Sutemii(Left(NumStr4, 1)) & "sprezece" q = b & "mii" End If If NumStr6 = 1 And NumStr5 > 1 And NumStr5 <= 9 Then If NumStr4 = 0 Then b = "osuta" & Tens(Left(NumStr5, 1)) q = b & "mii" Else b = "osuta" & Tens(Left(NumStr5, 1)) & "si" & Sutemii(Left(NumStr4, 1)) q = b & "mii" End If End If If NumStr6 = 2 And NumStr5 = 0 And NumStr4 = 0 Then b = "douasute" q = b & "mii" Else If NumStr4 <> 0 And NumStr5 = 0 And NumStr6 = 2 Then b = "douasute" & Sutemii(Left(NumStr4, 1)) q = b & "mii" End If End If If NumStr4 = 0 And NumStr5 = 1 And NumStr6 = 2 Then b = "douasutezece" q = b & "mii" End If If NumStr4 = 1 And NumStr5 = 1 And NumStr6 = 2 Then b = "douasute" & "unsprezece" q = b & "mii" End If If NumStr4 > 1 And NumStr4 <= 9 And NumStr5 = 1 And NumStr6 = 2 Then b = "douasute" & Sutemii(Left(NumStr4, 1)) & "sprezece" q = b & "mii" End If If NumStr6 = 2 And NumStr5 > 1 And NumStr5 <= 9 Then If NumStr4 = 0 Then b = "douasute" & Tens(Left(NumStr5, 1)) q = b & "mii" Else b = "douasute" & Tens(Left(NumStr5, 1)) & "si" & Sutemii(Left(NumStr4, 1)) q = b & "mii" End If End If If NumStr4 = 0 And NumStr5 = 0 And NumStr6 > 2 And NumStr6 <= 9 Then b = Sutemii(Left(NumStr6, 1)) & "sute" q = b & "mii" End If If NumStr4 > 0 And NumStr4 <= 9 And NumStr5 = 0 And NumStr6 > 2 And NumStr6 <= 9 Then b = Numbers(Left(NumStr6, 1)) & "sute" & Sutemii(Left(NumStr4, 1)) q = b & "mii" End If If NumStr4 = 0 And NumStr5 = 1 And NumStr6 > 2 And NumStr6 <= 9 Then b = Numbers(Left(NumStr6, 1)) & "sute" & "zece" q = b & "mii" End If If NumStr4 = 1 And NumStr5 = 1 And NumStr6 > 2 And NumStr6 <= 9 Then b = Numbers(Left(NumStr6, 1)) & "sute" & "unsprezece" q = b & "mii" End If If NumStr4 > 1 And NumStr4 <= 9 And NumStr5 = 1 And NumStr6 > 2 And NumStr6 <= 9 Then b = Numbers(Left(NumStr6, 1)) & "sute" & Numbers(Left(NumStr4, 1)) & "sprezece" q = b & "mii" End If If NumStr5 <> 1 And NumStr5 <> 0 And NumStr6 > 2 And NumStr6 <= 9 Then If NumStr4 = 0 Then b = Numbers(Left(NumStr6, 1)) & "sute" & Tens(Left(NumStr5, 1)) q = b & "mii" Else b = Numbers(Left(NumStr6, 1)) & "sute" & Tens(Left(NumStr5, 1)) & "si" & Sutemii(Left(NumStr4, 1)) q = b & "mii" End If End If End If ' Aici se termina xxx 999 xxx si incepe 999 xxx xxx If NumStr7 = 1 And NumStr8 = 0 And NumStr9 = 0 Then c = "unmilion" r = c End If If NumStr7 = 2 And NumStr8 = 0 And NumStr9 = 0 Then c = "doua" r = c & "milioane" End If If NumStr7 < 10 And NumStr7 > 2 And NumStr8 = 0 And NumStr9 = 0 Then c = Numbers(Left(NumStr7, 1)) r = c & "milioane" End If If NumStr7 = 0 And NumStr8 = 1 And NumStr9 = 0 Then c = "zece" r = c & "milioane" End If If NumStr7 = 1 And NumStr8 = 1 And NumStr9 = 0 Then c = "unsprezece" r = c & "milioane" End If If NumStr8 = 1 And NumStr7 > 1 And NumStr7 <= 9 And NumStr9 = 0 Then c = Numbers(Left(NumStr7, 1)) & "sprezece" r = c & "milioane" End If If NumStr7 = 0 And NumStr8 = 2 And NumStr9 = 0 Then c = "douazeci" r = c & "milioane" End If If NumStr8 >= 2 And NumStr9 = 0 Then If NumStr7 = 0 Then c = Tens(Left(NumStr8, 1)) r = c & "milioane" Else c = Tens(Left(NumStr8, 1)) & "si" & Numbers(Left(NumStr7, 1)) r = c & "milioane" End If End If If NumStr7 = 0 And NumStr8 = 0 And NumStr9 = 1 Then c = "osuta" r = c & "milioane" Else If NumStr7 > 0 And NumStr7 <= 9 And NumStr8 = 0 And NumStr9 = 1 Then c = "osuta" & Numbers(Left(NumStr7, 1)) r = c & "milioane" End If If NumStr7 = 0 And NumStr8 = 1 And NumStr9 = 1 Then c = "osuta" & "zece" r = c & "milioane" End If If NumStr7 = 1 And NumStr8 = 1 And NumStr9 = 1 Then c = "osuta" & "unsprezece" r = c & "milioane" End If If NumStr7 > 1 And NumStr7 <= 9 And NumStr8 = 1 And NumStr9 = 1 Then c = "osuta" & Numbers(Left(NumStr7, 1)) & "sprezece" r = c & "milioane" End If If NumStr9 = 1 And NumStr8 > 1 And NumStr8 <= 9 Then If NumStr7 = 0 Then c = "osuta" & Tens(Left(NumStr8, 1)) r = c & "milioane" Else c = "osuta" & Tens(Left(NumStr8, 1)) & "si" & Numbers(Left(NumStr7, 1)) r = c & "milioane" End If End If If NumStr9 = 2 And NumStr8 = 0 And NumStr7 = 0 Then c = "douasute" r = c & "milioane" Else If NumStr7 <> 0 And NumStr8 = 0 And NumStr9 = 2 Then c = "douasute" & Numbers(Left(NumStr7, 1)) r = c & "milioane" End If End If If NumStr7 = 0 And NumStr8 = 1 And NumStr9 = 2 Then c = "douasutezece" r = c & "milioane" End If If NumStr7 = 1 And NumStr8 = 1 And NumStr9 = 2 Then c = "douasute" & "unsprezece" r = c & "milioane" End If If NumStr7 > 1 And NumStr7 <= 9 And NumStr8 = 1 And NumStr9 = 2 Then c = "douasute" & Numbers(Left(NumStr7, 1)) & "sprezece" r = c & "milioane" End If If NumStr9 = 2 And NumStr8 > 1 And NumStr8 <= 9 Then If NumStr7 = 0 Then c = "douasute" & Tens(Left(NumStr8, 1)) r = c & "milioane" Else c = "douasute" & Tens(Left(NumStr8, 1)) & "si" & Numbers(Left(NumStr7, 1)) r = c & "milioane" End If End If If NumStr7 = 0 And NumStr8 = 0 And NumStr9 > 2 And NumStr9 <= 9 Then c = Numbers(Left(NumStr9, 1)) & "sute" r = c & "milioane" End If If NumStr7 > 0 And NumStr7 <= 9 And NumStr8 = 0 And NumStr9 > 2 And NumStr9 <= 9 Then c = Numbers(Left(NumStr9, 1)) & "sute" & Numbers(Left(NumStr7, 1)) r = c & "milioane" End If If NumStr7 = 0 And NumStr8 = 1 And NumStr9 > 2 And NumStr9 <= 9 Then c = Numbers(Left(NumStr9, 1)) & "sute" & "zece" r = c & "milioane" End If If NumStr7 = 1 And NumStr8 = 1 And NumStr9 > 2 And NumStr9 <= 9 Then c = Numbers(Left(NumStr9, 1)) & "sute" & "unsprezece" r = c & "milioane" End If If NumStr7 > 1 And NumStr7 <= 9 And NumStr8 = 1 And NumStr9 > 2 And NumStr9 <= 9 Then c = Numbers(Left(NumStr9, 1)) & "sute" & Numbers(Left(NumStr7, 1)) & "sprezece" r = c & "milioane" End If If NumStr8 <> 1 And NumStr8 <> 0 And NumStr9 > 2 And NumStr9 <= 9 Then If NumStr7 = 0 Then c = Numbers(Left(NumStr9, 1)) & "sute" & Tens(Left(NumStr8, 1)) r = c & "milioane" Else c = Numbers(Left(NumStr9, 1)) & "sute" & Tens(Left(NumStr8, 1)) & "si" & Numbers(Left(NumStr7, 1)) r = c & "milioane" End If End If End If ' Aici se termina 999 xxx xxx If NumStr1 = 0 And NumStr2 = 0 And NumStr3 = 0 And NumStr4 = 0 And NumStr5 = 0 And NumStr6 = 0 And NumStr7 = 0 And NumStr8 = 0 And NumStr9 = 0 Then Litere = z Else If NumStr10 = 0 And NumStr11 = 0 Then Litere = r & q & p Else Litere = r & q & p & "si" & z End If End If End Function Edited by Berti, 16 April 2008 - 08:24. |
#40
Posted 16 April 2008 - 15:13
Berti, on Apr 16 2008, 09:22, said: Banuiesc ca nu lucrati cu sume mai mari de atat :P Daca totusi se scrie suma asta, pentru un comision de nimic, 0,001% vin s-o scriu personal de mana. Succes. Merge perfect functia. Multumesc :thumbup: P.S: Atasez si "chitantierul" finalizat, poate mai are cineva nevoie de el. Chitantier.zip 22.29K 513 downloads |
#41
Posted 17 April 2008 - 12:45
Un algoritm "barbar" dar isi face treaba, bv.
Oricum din cate stiu eu nu poti elibera o chitanta cu o valoare mai mare de 5000 lei, asa ca nu va faceti griji. |
#42
Posted 17 April 2008 - 19:51
B3aT, on Apr 17 2008, 13:45, said: Un algoritm "barbar" dar isi face treaba, bv. Recunosc asta, dar scopu mijloacele... nevand pregatire in domeniu l-am facut dupa ureche. Nefacandu-l de placere, ci de nevoie, nu m-o intresat optimizarea lui, singura modificare am facut-o cand s-a trecut la leul greu. Iar chestia cu limita, era inca de pe vremea ROL-ului, cand o 999 mil. nu era o suma inimaginabila pentru un OP. Normal, acum cu leul greu nici nu se pune problema sa ajungi la aceasta suma. |
#43
Posted 06 November 2008 - 19:07
vezi versiunea mea care are exemplu de folosire in excel.
Mycro, on Apr 15 2008, 12:44, said: Imi trebuie un macro excel care sa converteasca din lei in litere. Am luat functia asta si am tradus valorile in romana, dar nu merge cum trebuie (am atasat rezultatul) Ex: - 23,43 lei apare 'douazeci treiLeisipatruzeci treiBani' in loc de 'douazecisitreiLeisipatruzecisitreiBani' - 100,01 lei apare 'unusuteLeisiunuBani' in loc de 'osutaLeisiunBan' Ce trebuie modificat? (de mentionat ca nu stiu programare) functie_lei.txt |
#44
Posted 10 February 2009 - 15:20
Am si eu o problema in excel si anume a coloana C cu numere cu 3 zecimale si cand ai dau cu 2 zecimale în spatele aspectului raman tot 3 zecimale deci cum as putea face sa se schimbe in 2 zecimale ??????
ex in casuta A1 am nr 1.123 transform in 2 zecimale 1.12 iar in casuta C1 am 1.12 si B1 sa zicem este 10 dar cand dau dexemplu o formulaD1 =INDEX(B1;MATCH(C1;A1;0);1) imi ea valoarea din A1 de 1.123 cum fac ca sa eie numai valoarea 1.12?????????????? sau exissta vreo formula care sa -ti treaca valoarea cu 2 zecimale si atat in alta casuta(adica A1=1.123 si pun o formula in B1 ca sa-mi dea 1.12 simplu) ?????? pls Help pls Help pls Help |
#45
Posted 20 March 2009 - 08:32
Quote Asta-i solutia, din cate tin minte m-am ocupat de toate exceptiile. exemple de mai sus le rezolva asa: - 23.43 ->douazecisitreileisipatruzecisitreibani - 100.01 ->osutaleisiunban - 99999999.99 -> nouazecisinouamilioanenouasutenouazecisinouamiinouasutenouazecisinoualeisinouaze cisinouabani (SP nu permite afisearea unui sir de caractere atat de lung) - 1000000000 -> valoare prea mare Banuiesc ca nu lucrati cu sume mai mari de atat :P Daca totusi se scrie suma asta, pentru un comision de nimic, 0,001% vin s-o scriu personal de mana. Hello! Poate cineva (dar foarte repede :P) modifica algoritmul asta in asa fel incat sa transcrie in litere numai leii, nu si banii ? :worthy: Eu am incercat dar nu ma descurc, desi inteleg vag ce se intampla acolo... Exemplu: 209.41 -> douasutenoualei41bani Multumesc. Edited by eFBIai, 20 March 2009 - 08:36. |
#46
Posted 20 March 2009 - 09:27
eFBIai, on Mar 20 2009, 08:32, said: Hello! Poate cineva (dar foarte repede :P) modifica algoritmul asta in asa fel incat sa transcrie in litere numai leii, nu si banii ? :worthy: Eu am incercat dar nu ma descurc, desi inteleg vag ce se intampla acolo... Exemplu: 209.41 -> douasutenoualei41bani Multumesc. E ok, daca s-a apucat cineva de treaba :P sa renunte, am reusit s-o fac singur. O zi frumoasa! |
|
#47
Posted 19 May 2009 - 10:54
Varianta PHP
function Citesc($nr) { if($nr >= 1000000000) return "DEPASIRE"; if($nr >= 1000000)//un milion { $a=intval($nr/1000000);//cate milioane sint... if($a == 1) $string.="unmilion"; else // mai multe milioane $string.=$this->Parte($a)."milioane"; } $nr=$nr-($a*1000000);//sute de mii if($nr >= 1000)//o mie { $a=intval($nr/1000);//cate mii sint... if($a == 1) $string.="unamie"; else // mai multe milioane $string.=$this->Parte($a)."mii"; } $nr=$nr-($a*1000);//sute if($nr >= 1) { $a=intval($nr/1);// $string.=$this->Parte($a); } if ($nr>2) $string.='lei'; else if ($nr>1) $string.="leu"; else if ($nr>0) $string.='zerolei'; $bani=number_format(($nr-intval($nr))*100); //banii if ($bani>0) { $string.="si"; $string.=$this->Parte($bani); if ($bani>1) $string.="bani"; else $string.="ban"; } return $string; } function Parte($nr) { $mat[0]="zero"; $mat[1]="unu"; $mat[2]="doua"; $mat[3]="trei"; $mat[4]="patru"; $mat[5]="cinci"; $mat[6]="sase"; $mat[7]="sapte"; $mat[8]="opt"; $mat[9]="noua"; $a=intval($nr/100); if($a > 0) { if($a == 1) $comun.="osuta"; else if($a == 2) $comun.="douasute"; else $comun.=$mat[$a]."sute"; } $nrn=$nr-$a*100; $b=intval($nrn/10); $c=$nrn-$b*10; if($b > 0) { if($b == 1) { if($c == 0) $comun.="zece"; else if($c == 1) $comun.="unsprezece"; else if($c == 2) $comun.="doisprezece"; else if($c == 4) $comun.="paisprezece"; else if($c == 5) $comun.="cinsprezece"; else if($c == 6) $comun.="saisprezece"; else $comun.=$mat[$c]."sprezece"; return $comun; } else { if($b == 2) $comun.="douazeci"; else if($b == 5) $comun.="cinzeci"; else if($b == 6) $comun.="saizeci"; else $comun.=$mat[$b]."zeci"; } } if($c > 0) { if($b > 0) $comun.="si"; if ($c==1 && $nr<2) $comun.="un"; else if ($c==2 && $nr<3) $comun.="doi"; else $comun.=$mat[$c]; } return $comun; } Edited by mgh, 19 May 2009 - 11:03. |
#48
Posted 16 June 2009 - 20:49
lordull, on 10th February 2009, 16:20, said: Am si eu o problema in excel si anume a coloana C cu numere cu 3 zecimale si cand ai dau cu 2 zecimale în spatele aspectului raman tot 3 zecimale deci cum as putea face sa se schimbe in 2 zecimale ?????? ex in casuta A1 am nr 1.123 transform in 2 zecimale 1.12 iar in casuta C1 am 1.12 si B1 sa zicem este 10 dar cand dau dexemplu o formulaD1 =INDEX(B1;MATCH(C1;A1;0);1) imi ea valoarea din A1 de 1.123 cum fac ca sa eie numai valoarea 1.12?????????????? sau exissta vreo formula care sa -ti treaca valoarea cu 2 zecimale si atat in alta casuta(adica A1=1.123 si pun o formula in B1 ca sa-mi dea 1.12 simplu) ?????? pls Help pls Help pls Help incearca cu functia ROUNDE :rolleyes: |
#49
Posted 19 June 2009 - 12:11
#50
Posted 21 February 2012 - 17:20
Nu stiu pe cati mai intereseaza dar uite un cod verificat si foarte rapid, facut in VB
- Merge pana la 999 miliarde - e versiunea fara zecimale, se poate adapta... cred ca am si o versiune cu zecimale pe undeva - e versiunea cu spatii intre cuvinte, e mai citetz - spatiile se pot scoate la nevoie, cu mici modificari in cod - se poate extinde usor la trilioane si catralioane, are un algoritm pe grupuri de 3 digiti, aici foloseste doar 4 grupuri Function spl(nr As Long) Dim st, nsp, n10p As String Dim k, i, lim As Integer Dim fst As Double, grup() As Long Dim n(1000) As String '--------------------------------------------------- st = "" n(0) = "" n(1) = "una" n(2) = "doua" n(3) = "trei" n(4) = "patru" n(5) = "cinci" n(6) = "sase" n(7) = "sapte" n(8) = "opt" n(9) = "noua" n(10) = "zece" n10p = "zeci" nsp = "spre" If nr < 999 Then lim = nr Else lim = 999 '--------------------------------------------------- For i = 11 To lim If i > 10 And i < 20 Then n(i) = n(i - 10) & "spre" & n(10) If i = 11 Then n(i) = "un" & nsp & n(10) If i = 12 Then n(i) = "doi" & nsp & n(10) If i = 14 Then n(i) = "pai" & nsp & n(10) If i = 16 Then n(i) = "sai" & nsp & n(10) End If If i > 19 And i < 100 Then If Int(i / 10) - i / 10 = 0 Then n(i) = n(i / 10) & n10p If i = 60 Then n(i) = "sai" & n10p Else n(i) = n(Int(i / 10) * 10) & " si " & n(i - Val(Int(i / 10)) * 10) End If End If If i > 99 And i < 1000 Then If Int(i / 100) - i / 100 = 0 Then n(i) = n(Int(i / 100)) & " sute " n(100) = "o suta " Else n(i) = n(Val(Int(i / 100)) * 100) & n(i - Val(Int(i / 100)) * 100) End If End If Next i '--------------------------------------------------- ReDim grup(10) As Long k = 0 fst = str(nr) Do While fst > 999 k = k + 1 grup(k) = fst - Int(fst / 1000) * 1000 fst = Int(fst / 1000) Loop k = k + 1 grup(k) = fst fst = Empty '--------------------------------------------------- Do While k > 0 -- Aici poate intra cod similar pt mai multe grupuri k=5, 6, etc pana la 10 If k = 4 Then If grup(k) <> 0 Then If grup(k) = 1 Then n(grup(k)) = "un" st = st & n(grup(k)) & " miliard " Else If (grup(k) > 1 And grup(k) < 20) Or (Right(grup(k), 2) > 0 And Right(grup(k), 2) < 20) Then st = st & n(grup(k)) & " miliarde " Else st = st & n(grup(k)) & " de miliarde " End If End If End If End If If k = 3 Then If grup(k) <> 0 Then If grup(k) = 1 Then n(grup(k)) = "un" st = st & n(grup(k)) & " milion " Else If (grup(k) > 1 And grup(k) < 20) Or (Right(grup(k), 2) > 0 And Right(grup(k), 2) < 20) Then st = st & n(grup(k)) & " milioane " Else st = st & n(grup(k)) & " de milioane " End If End If End If End If If k = 2 Then If grup(k) <> 0 Then If grup(k) = 1 Then n(grup(k)) = "o" st = st & n(grup(k)) & " mie " Else If (grup(k) > 1 And grup(k) < 20) Or (Right(grup(k), 2) > 0 And Right(grup(k), 2) < 20) Then st = st & n(grup(k)) & " mii " Else st = st & n(grup(k)) & " de mii " End If End If End If End If If k = 1 Then If grup(k) <> 0 Then If grup(k) = 1 Then n(grup(k)) = " unu" st = st & n(grup(k)) Else If (grup(k) > 1 And grup(k) < 20) Or (Right(grup(k), 2) >= 0 And Right(grup(k), 2) < 20) Then st = st & n(grup(k)) Else st = st & n(grup(k)) End If End If End If End If If Right(st, 3) = "una" Then st = Mid(st, 1, Len(st) - 3) & "unu" End If If Right(st, 4) = "doua" Then st = Mid(st, 1, Len(st) - 4) & "doi" End If k = k - 1 Loop '--------------------------------------------------- spl = st End Function succes |
#52
Posted 30 October 2012 - 15:40
Salut,
Nu ma prea pricep si as avea nevoie de ajutor din partea voastra, cum procedez pentru excel 2007 sa transform nuemrele in litere (este vorba de un chitantier ) daca este unul din codurile acestea bune, cum il bag in excel? Stima |
#53
Posted 14 January 2013 - 13:18
Salut,
Am facut eu acest program minune. E scris in JAVA si merge destul de bine. Poate ajuta si alta lume. E destul de complicat, da, uneori am tendinta sa compilc lucrurile, dar important e ca merge. Suporta numere pana la sute de miliarde. Caracterul decimal este punctul: Tot ce trebuie sa faceti este sa copiati codul si sa apelati functia numberToString(String number). Exemplu: numberToString("1234537234.23") public String numberToString(String number) { try{ String rezult=""; String partea_intreaga=""; String partea_zecimala=""; number=number.replace(",", "."); // in cazul in care se apeleaza cu , in loc de . ca si caracter decimal //Impartim numarul in parte intreaga si partea zecimala StringTokenizer tokens = new StringTokenizer(number, "."); if(number.contains(".")) { partea_intreaga = tokens.nextToken(); partea_zecimala = tokens.nextToken(); } else { partea_intreaga = number; } if(!partea_zecimala.equals("")) if(partea_zecimala.length() <= 3) rezult=getWholenumberToString(partea_intreaga)+" virgula "+getWholenumberToString(partea_zecimala); else rezult=getWholenumberToString(partea_intreaga)+" virgula "+getTheRrestOfTheNumber(partea_zecimala); else rezult=getWholenumberToString(partea_intreaga); rezult=rezult.replaceAll(" +", " "); //scoatem toate spatiile multiple rezult=rezult.replace("zero miliarde", ""); // evitam expresiile de genul rezult=rezult.replace("zero milioane", ""); // evitam expresiile de genul rezult=rezult.replace("zero mi", ""); // evitam expresiile de genul rezult=rezult.replaceAll(" +", " "); //scoatem toate spatiile multiple return rezult; } catch(NumberFormatException e) { return "EROARE DE CONVERSIE. NUMARUL CONTINE CARACTERE ILEGALE"; } } public String getWholenumberToString(String partea_intreaga) throws NumberFormatException { String rezult=""; String selected_digits=""; String temp=""; int contor=0; int nrOfDigits=0; while(partea_intreaga.length() > 0) { temp=""; if(partea_intreaga.length() >= 3) nrOfDigits = 3; else if(partea_intreaga.length() >= 2) nrOfDigits = 2; else if(partea_intreaga.length() >= 1) nrOfDigits = 1; //selectam cele mai nesemnificative 1/2/3 cifre din partea intreaga selected_digits=partea_intreaga.substring(partea_intreaga.length()-nrOfDigits,partea_intreaga.length()); partea_intreaga=partea_intreaga.substring(0,partea_intreaga.length()-nrOfDigits); //scoatm cifrele selectate din sir if(getnumberToString3Digits(selected_digits).contains("zeci") || getnumberToString3Digits(selected_digits).contains("sute") && contor != 0) temp+="de"; // adaugam cuvantul 'de' daca este necesar //daca avem doar un miliard/mie/milion if(contor > 0 && (selected_digits.equals("001") || selected_digits.equals("01") || selected_digits.equals("1"))) { switch(contor) { case 0: temp+=" "; break; case 1: temp+=" o mie "; break; case 2: temp+=" un milion "; break; case 3: temp+=" un miliard "; break; } rezult=temp+rezult; } else //daca avem doar doua miliarde/mi/milioane if(contor > 0 && (selected_digits.equals("002") || selected_digits.equals("02") || selected_digits.equals("2"))) { switch(contor) { case 0: temp+=" "; break; case 1: temp+=" doua mi "; break; case 2: temp+=" doua milioane "; break; case 3: temp+=" doua miliarde "; break; } rezult=temp+rezult; } else { switch(contor) { case 0: temp+=" "; break; case 1: temp+=" mi "; break; case 2: temp+=" milioane "; break; case 3: temp+=" miliarde "; break; } rezult=getnumberToString3Digits(selected_digits)+temp+rezult; } //contorul ne spune la ce parte din numar suntem (miliarde 3, milioane 2, mi 1, sau sute 0) contor++; } // end while //este posibil ca intreg rezultatul sa se termine in cuvantul 'de ' ceea ce nu e de dorit. il vom elimina if(rezult.endsWith("de ")) rezult=rezult.substring(0,rezult.length()-3); return rezult; } public String getTheRrestOfTheNumber(String number) { String rezultat=""; String theNR = number; while(theNR.length() > 0) { switch(Integer.parseInt(theNR.charAt(0)+"")) { case 0: rezultat+="zero "; break; case 1: rezultat+="unu "; break; case 2: rezultat+="doi "; break; case 3: rezultat+="trei "; break; case 4: rezultat+="patru "; break; case 5: rezultat+="cinci "; break; case 6: rezultat+="sase "; break; case 7: rezultat+="sapte "; break; case 8: rezultat+="opt "; break; case 9: rezultat+="noua "; break; } theNR=theNR.substring(1, theNR.length()); } return rezultat; } public String getnumberToString3Digits(String number) throws NumberFormatException { String rezultat=""; String theNR=number; if(theNR.length() == 3) { int nr=Integer.parseInt(number.charAt(0)+""); switch (nr) { case 0: rezultat+=""; break; case 1: rezultat+="o suta "; break; case 2: rezultat+="doua sute "; break; case 3: rezultat+="trei sute "; break; case 4: rezultat+="patru sute "; break; case 5: rezultat+="cinci sute "; break; case 6: rezultat+="sase sute "; break; case 7: rezultat+="sapte sute "; break; case 8: rezultat+="opt sute "; break; case 9: rezultat+="noua sute "; break; } theNR=theNR.substring(1, theNR.length()); rezultat+= getnumberToString3Digits(theNR); } else if(theNR.length() == 2) { if(theNR.charAt(0) == '1') { switch(Integer.parseInt(theNR.charAt(1)+"")) { case 0: rezultat+="zece "; break; case 1: rezultat+="unsprezece "; break; case 2: rezultat+="douasprezece "; break; case 3: rezultat+="treisprezece "; break; case 4: rezultat+="patrusprezece "; break; case 5: rezultat+="cincisprezece "; break; case 6: rezultat+="saisprezece "; break; case 7: rezultat+="saptesprezece "; break; case 8: rezultat+="optsprezece "; break; case 9: rezultat+="nouasprezece "; break; } } else { switch(Integer.parseInt(theNR.charAt(0)+"")) { case 0: rezultat+=""; break; case 2: rezultat+="douazeci "; break; case 3: rezultat+="treizeci "; break; case 4: rezultat+="patruzeci "; break; case 5: rezultat+="cincizeci "; break; case 6: rezultat+="saizeci "; break; case 7: rezultat+="saptezeci "; break; case 8: rezultat+="optzeci "; break; case 9: rezultat+="nouazeci "; break; } if(Integer.parseInt(theNR.charAt(1)+"") > 0) { if(Integer.parseInt(theNR.charAt(0)+"") > 0) rezultat+="si "; theNR=theNR.substring(1, theNR.length()); rezultat+= getnumberToString3Digits(theNR); } } } else if(theNR.length() == 1) { switch(Integer.parseInt(theNR.charAt(0)+"")) { case 0: rezultat+="zero "; break; case 1: rezultat+="unu "; break; case 2: rezultat+="doi "; break; case 3: rezultat+="trei "; break; case 4: rezultat+="patru "; break; case 5: rezultat+="cinci "; break; case 6: rezultat+="sase "; break; case 7: rezultat+="sapte "; break; case 8: rezultat+="opt "; break; case 9: rezultat+="noua "; break; } } return rezultat; } |
#54
Posted 25 March 2015 - 09:58
eFBIai, on 20 martie 2009 - 09:27, said:
E ok, daca s-a apucat cineva de treaba sa renunte, am reusit s-o fac singur. O zi frumoasa! Problema la acel script este ca daca se face o rotunjire de la 58 bani la 59 de bani tot cincizecisioptbani apare. |
Anunturi
Bun venit pe Forumul Softpedia!
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users