Radu, cum as putea sa transform un numar in text in Excel? De exemplu, daca scriu 123 intr-o celula sa mi-o trasnforme in „o suta doua zeci si trei”.
Hai sa vedem, pornesc acum betoniera de Excel-uri. 🙂
Functii, macro, UDF
Sunt mai multe moduri in care poti face asta. Poti sa incerci prin functii, macro-uri sau UDF. Eu am mers pe UDF.
Ce e UDF?
UDF vine de la User Defined Functions. Cred ca ai auzit pana acum de SUM, IF, VLOOKUP, etc. Ei bine, pe langa functiile astea predefinite, ti le poti defini si pe ale tale.
Nu de alta, dar nu stiu sa fie vreo functie in Excel numita „HAIACUMTRANSFORMANUMEREINTEXT(text). Eu cel putin nu am gasit-o. 🙂
Download
Poate ca si tu te temi de cod-ul VBA pe care o sa il pun mai jos. De asta, am zis ca ar fi mai bine sa iti dau fisierul care deja contine cod-ul care face „magia”.
Transforma numar in text – download.
E un link de pe Google Drive – site-ul vad ca nu ma lasa sa incarc fisiere xlsm – contin mini-bombe. 🙂
Dupa ce descarci fisierul, nu uita sa dai enable la macro-uri ca sa te pot virusa cu succes poti rula functia.
Tema de la curs online
Fisierul asta e de fapt ultima tema de la Macro / VBA – urmatorul nivel in Excel, cursul meu online. Daca vrei sa si intelegi cum am gandit codul, as zice sa arunci o privire peste curs.
Hai sa vedem cod
Si daca nu vrei sa descarci fisierul si preferi sa vezi doar codul ca sa imi spui ce nu am facut bine, il poti gasi mai jos. Cred ca mai gasesti si o bata in sectiunea de comentarii. 🙂
CONV e functia pe care o apelezi, CIFRA e o functie auxiliara pe care am folosit-o ca sa mai scurtez din cod.
Function CONV(Numar As String)
L = Len(Numar) ‘vedem lungimea numarului
CONV = „” ‘pentru situatia cand scrie nu avem nimic in celula
If L = 1 Then ‘o singura cifra
CONV = CIFRA(Numar)
End If
If L = 2 And Left(Numar, 1) = 0 Then ‘pentru numere intre 101 si 109
CONV = CIFRA(Right(Numar, 1))
End If
If L = 2 And Left(Numar, 1) = „1” Then ‘numerele intre 10 si 19
If Numar = „10” Then
CONV = „zece”
ElseIf Numar = „11” Then: CONV = „unsprezece”
ElseIf Numar = „12” Then: CONV = „doisprezece”
ElseIf Numar = „13” Then: CONV = „treisprezece”
ElseIf Numar = „14” Then: CONV = „patrusprezece”
ElseIf Numar = „15” Then: CONV = „cincisprezece”
ElseIf Numar = „16” Then: CONV = „saisprezece”
ElseIf Numar = „17” Then: CONV = „saptesprezece”
ElseIf Numar = „18” Then: CONV = „optusprezece”
ElseIf Numar = „19” Then: CONV = „nouasprezece”
End If
End If
If L = 2 And Left(Numar, 1) = „2” Then ‘numere intre 20 si 29
CONV = „doua zeci si ” & CIFRA(Right(Numar, 1))
End If
If L = 2 And Left(Numar, 1) > 2 Then ‘numere intre 30 si 99
If Right(Numar, 1) <> „0” Then
CONV = CIFRA(Left(Numar, 1)) & ” zeci si ” & CIFRA(Right(Numar, 1))
Else
CONV = CIFRA(Left(Numar, 1)) & ” zeci”
End If
End If
If L = 3 And Left(Numar, 1) = „1” Then ‘numere intre 100 si 199
CONV = „o suta ” & CONV(Right(Numar, 2))
End If
If L = 3 And Left(Numar, 1) = „2” Then ‘numere intre 200 si 299
CONV = „doua sute ” & CONV(Right(Numar, 2))
End If
If L = 3 And Left(Numar, 1) > 2 Then ‘numere intre 300 si 399
CONV = CIFRA(Left(Numar, 1)) & ” sute ” & CONV(Right(Numar, 2))
End If
End Function
Function CIFRA(Numar As String)
If Numar = „1” Then
CIFRA = „unu”
ElseIf Numar = „2” Then: CIFRA = „doi”
ElseIf Numar = „3” Then: CIFRA = „trei”
ElseIf Numar = „4” Then: CIFRA = „patru”
ElseIf Numar = „5” Then: CIFRA = „cinci”
ElseIf Numar = „6” Then: CIFRA = „sase”
ElseIf Numar = „7” Then: CIFRA = „sapte”
ElseIf Numar = „8” Then: CIFRA = „opt”
ElseIf Numar = „9” Then: CIFRA = „noua”
End If
End Function
Daca ai incercat sa copiezi codul si nu merge, iti recomand sa descarci fisierul care are deja codul inclus. Daca ai alte „regional settings” fata de mine pot aparea probleme.
Radu este fondatorul onLearn si autorul majoritatii articolelor de pe acest site. Cand nu scrie sau nu inregistreaza vreun tutorial e in sala de curs sau lucreaza pe proiecte de consultanta ca sa invete lucruri noi.
Ai o intrebare?
Daca ai ajuns pana aici cautand sectiunea de comentarii, sa stii ca aceasta nu exista :). Poti insa ca sa ne pui intrebari in partea de forum a site-ului, te asteptam acolo.