In questi giorni avevo la necessità di creare dei file Excel nei quali riportare la conversione in lettere di numeri, come d esempio, convertire “123” in “centoventitre“.
L’applicazione della conversione la si trova in molti contesti, specie quello bancario, fiscale o legale.
Excel non dispone di una funzione che consenta di eseguire tale conversione per cui me la sono scritta in VBA.
Il Codice: Come Funziona
Ecco il codice VBA:
Function NumberToWords(ByVal Number As Double) As String
' Italian version
Dim u As Variant
Dim d As Variant
Dim h As Variant
Dim IntNum As Long
Dim t As String
u = Array("", "uno", "due", "tre", "quattro", "cinque", "sei", "sette", "otto", "nove")
d = Array("", "dieci", "venti", "trenta", "quaranta", "cinquanta", "sessanta", "settanta", "ottanta", "novanta")
h = Array("", "cento", "duecento", "trecento", "quattrocento", "cinquecento", "seicento", "settecento", "ottocento", "novecento")
IntNum = Int(Number)
' Handling numbers from 1 to 9
If IntNum < 10 Then
t = u(IntNum)
' Handling numbers from 10 to 99
ElseIf IntNum < 100 Then
t = d(Int(IntNum / 10)) & u(IntNum Mod 10)
' Handling numbers from 100 to 999
ElseIf IntNum < 1000 Then
t = h(Int(IntNum / 100)) & _
d(Int((IntNum Mod 100) / 10)) & _
u(IntNum Mod 10)
Else
t = "Number too big for the conversion!"
End If
' Return the result
NumberToWords = Trim(t)
End Function
Caratteristiche Principali
- Supporto per i numeri italiani:
- La funzione utilizza array predefiniti per unità (
u
), decine (d
) e centinaia (h
) in lingua italiana. - Gestisce numeri fino a 999.
- La funzione utilizza array predefiniti per unità (
- Modularità:
- Ogni blocco del codice è progettato per gestire un intervallo specifico: da 1 a 9, da 10 a 99, e da 100 a 999.
- Eliminazione degli spazi in eccesso:
- Utilizza la funzione
Trim
per rimuovere spazi superflui dal risultato finale.
- Utilizza la funzione
- Messaggio di errore personalizzato:
- Per numeri superiori a 999, restituisce un messaggio: “Number too big for the conversion!”.
Come Usarlo
- Aggiungi il codice a Excel:
- Premi Alt + F11 per aprire l’editor VBA.
- Crea un nuovo modulo e incolla il codice.
- Chiama la funzione da Excel:
- In una cella, usa:
=NumberToWords(123)
- Questo restituirà: “centoventitre“.
- In una cella, usa:
Perché è Utile
- Automazione: Ideale per creare file in cui è necessario includere importi numerici in forma testuale.
- Professionalità: Utilizzabile nei contesti professionali come legale, fiscale o bancario.
- Italiano nativo: Traduzione in italiano delle cifre.
Possibili Miglioramenti
- Supporto per i numeri decimali:
- Effettivamente il codice per ora non supporta anche la gestione dei numeri con cifre decimali per cui sarebbe un improvement molto utile.
- Estensione a numeri maggiori:
- Il limite a 999 è facilmente incrementabile modificando il codice che ho creato.
Lascia un commento