2 februarie 2006
R21718a - Numar scris (transformat) cu cuvinte

Am nevoie sa-mi fac in Exel niste calcule si unele rezultate (numere) imi trebuiesc redate cu text, adica cam in felul urmator:
50,00 Cincizeci lei 00 bani.
Cum se face chestia aceasta in Exel?
- Valeriu
Am scris o functie VBA care rezolva destul de bine problema.
Asa cum se vede din exemplu, cel mai mare numar tradus corect este 999,99.
Codul este dat mai jos:
Function NumarInLitere(r As Range) As String
Rem Copyright Mihai Maerean
Rem http://maerean.3x.ro
Dim intreg
intreg = Int(r.Value)
Dim cifre As Variant
Dim cifrefeminin As Variant
Dim zecedouazeci As Variant
cifre = Array("zero", "un", "doi", "trei", "patru", "cinci", "sase", "sapte", "opt", "noua")
cifrefeminin = Array("zero", "o", "doua", "trei", "patru", "cinci", "sase", "sapte", "opt", "noua")
zecedouazeci = Array("zece", "unsprezece", "doisprezece", "treisprezece", "paisprezece" _
, "cincisprezece", "saisprezece", "saptesprezece", "optsprezece", "nouasprezece")
Dim rezultat As String
rezultat = "zero"
If (intreg >= 100) Then
Dim sute As Integer
sute = Int(intreg / 100)
If (sute <> 1) Then
rezultat = cifrefeminin(sute Mod 10) & " sute"
Else
rezultat = "o suta"
End If
intreg = intreg Mod 100
Else
rezultat = ""
End If
If (intreg >= 10 And intreg <= 19) Then
rezultat = rezultat & " " & zecedouazeci(intreg - 10)
Else
If (intreg >= 10) Then
Dim zeci As Integer
zeci = Int(intreg / 10)
rezultat = rezultat & " " & cifrefeminin(zeci Mod 10) & "zeci"
If (intreg Mod 10 > 0) Then
rezultat = rezultat & " si"
End If
intreg = intreg Mod 10
End If
If (intreg > 0) Then
rezultat = rezultat & " " & cifre(intreg Mod 10)
End If
End If
If (r.Value < 1) Then
rezultat = "zero"
End If
NumarInLitere = Trim(rezultat) & " RON si " & Int(100 * (r.Value - Int(r.Value))) & " bani"
End Function