Convertire un numero in lettere

Stato
Chiusa ad ulteriori risposte.

MavericK

Nuovo utente
3 Febbraio 2016
1
3
Roma
Office 2010
0
Pubblico una funzione che ho scritto per convertire un numero in lettere. Questa ha un codice evidentemente più breve e semplice di altre reperibili su internet. Funziona con numeri positivi uguali o minori di 999.999.999.999.999,99
ESEMPIO:
INPUT: 123.456.789,12
OUTPUT: CENTOVENTITREMILIONIQUATTROCENTOCINQUANTASEIMILASETTECENTOOTTANTANOVE/12


Codice:
Public Function NumToLet(N) As String
    
    Words = Array("", "UNO", "DUE", "TRE", "QUATTRO", "CINQUE", "SEI", _
    "SETTE", "OTTO", "NOVE", "DIECI", "UNDICI", "DODICI", "TREDICI", _
    "QUATTORDICI", "QUINDICI", "SEDICI", "DICIASSETTE", "DICIOTTO", "DICIANNOVE", _
    "VENTI", "TRENTA", "QUARANTA", "CINQUANTA", "SESSANTA", "SETTANTA", _
    "OTTANTA", "NOVANTA", "CENTO", "UNO", "MILLE", "UNMILIONE", _
    "UNMILIARDO", "UNTRILIONE", "", "MILA", "MILIONI", "MILIARDI", "TRILIONI")
    F$ = Right(Format(N, "###0.00"), 2)
    I = Int(N)
    If I = 0 Then
        L$ = "ZERO"
    Else
        Dim G(5, 3) As Long
        For J = 1 To 5
            For k = 3 To 1 Step -1
                I = I / 10
                G(J, k) = (I - Int(I)) * 10
                I = Int(I)
            Next
        Next
        For J = 5 To 1 Step -1
            If G(J, 1) + G(J, 2) + G(J, 3) = 0 Then
            ElseIf G(J, 1) + G(J, 2) = 0 And G(J, 3) = 1 Then L$ = L$ & Words(28 + J)
            Else
                If G(J, 1) > 1 Then L$ = L$ & Words(G(J, 1))
                If G(J, 1) > 0 Then L$ = L$ & Words(28)
                If G(J, 2) = 1 Then
                    L$ = L$ & Words(G(J, 3) + 10)
                Else
                    If G(J, 2) > 1 Then
                        L$ = L$ & Words(G(J, 2) + 18)
                        If G(J, 3) = 1 Or G(J, 3) = 8 Then L$ = Left(L$, Len(L$) - 1)
                    End If
                    L$ = L$ & Words(G(J, 3))
                End If
                L$ = L$ & Words(33 + J)
            End If
        Next
    End If
    NumToLet = L$ & "/" & F$
End Function
 
Ultima modifica di un moderatore:

cromagno

Excel/VBA Expert
Supermoderatore
Expert
9 Agosto 2015
6.845
215
39
Sardegna
2013 (64 bit)
264
Ciao Maverick,

grazie per la condivisione :246:

P.S.
In futuro ricordati di inserire il codice tra i tag CODE.
 
Ultima modifica:
Stato
Chiusa ad ulteriori risposte.

Sostieni ForumExcel

Aiutaci a sostenere le spese e a mantenere online la community attraverso una libera donazione!