Convertire i numeri in parole

Excel non ha una funzione predefinita che Visualizza i numeri come parole inglesi in un foglio di lavoro, ma è possibile aggiungere questa funzionalità incollando il codice della funzione SpellNumber seguente in un modulo VBA (Visual Basic, Applications Edition). Questa funzione consente di convertire gli importi in dollari e centesimi in parole con una formula, in modo che 22,50 legga come Twenty-Two dollari e 50 centesimi. Questo può essere molto utile se si usa Excel come modello per la stampa di controlli.

Se si desidera convertire i valori numerici in formato testo senza visualizzarli come parole, usare invece la funzione testo .

Nota: Microsoft fornisce esempi di programmazione solo per le illustrazioni, senza garanzia espressa o implicita. Ciò include, ma non solo, le garanzie implicite di commerciabilità o idoneità per uno scopo specifico. In questo articolo si presuppone che si abbia familiarità con il linguaggio di programmazione VBA e con gli strumenti usati per creare e eseguire il debug delle procedure. Gli ingegneri del supporto tecnico Microsoft possono aiutare a spiegare la funzionalità di una determinata procedura. Tuttavia, questi esempi non verranno modificati per creare funzionalità aggiuntive o per creare procedure per soddisfare i requisiti specifici.

Creare la funzione SpellNumber per convertire i numeri in parole

  1. Usare la scelta rapida da tastiera ALT + F11 per aprire Visual Basic Editor (VBE).

    Nota: È anche possibile accedere a Visual Basic Editor visualizzando la scheda Sviluppo nella barra multifunzione.

  2. Fare clic sulla scheda Inserisci e fare clic su Modulo.

    Scegliere Modulo dal menu Inserisci.
  3. Copiare le righe di codice seguenti.

    Nota: Nota come funzione definita dall'utente (UDF), questo codice automatizza l'attività di conversione di numeri in testo in tutto il foglio di lavoro.

    Option Explicit
    
    'Main Function
    
    Function SpellNumber(ByVal MyNumber)
    
    Dim Dollars, Cents, Temp
    
    Dim DecimalPlace, Count
    
    ReDim Place(9) As String
    
    Place(2) = " Thousand "
    
    Place(3) = " Million "
    
    Place(4) = " Billion "
    
    Place(5) = " Trillion "
    
    ' String representation of amount.
    
    MyNumber = Trim(Str(MyNumber))
    
    ' Position of decimal place 0 if none.
    
    DecimalPlace = InStr(MyNumber, ".")
    
    ' Convert cents and set MyNumber to dollar amount.
    
    If DecimalPlace > 0 Then
    
    Cents = GetTens(Left(Mid(MyNumber, DecimalPlace + 1) & _ "00", 2))
    
    MyNumber = Trim(Left(MyNumber, DecimalPlace - 1))
    
    End If
    
    Count = 1
    
    Do While MyNumber <> ""
    
    Temp = GetHundreds(Right(MyNumber, 3))
    
    If Temp <> "" Then Dollars = Temp & Place(Count) & Dollars
    
    If Len(MyNumber) > 3 Then
    
    MyNumber = Left(MyNumber, Len(MyNumber) - 3)
    
    Else
    
    MyNumber = ""
    
    End If
    
    Count = Count + 1
    
    Loop
    
    Select Case Dollars
    
    Case ""
    
    Dollars = "No Dollars"
    
    Case "One"
    
    Dollars = "One Dollar"
    
    Case Else
    
    Dollars = Dollars & " Dollars"
    
    End Select
    
    Select Case Cents
    
    Case ""
    
    Cents = " and No Cents"
    
    Case "One"
    
    Cents = " and One Cent"
    
    Case Else
    
    Cents = " and " & Cents & " Cents"
    
    End Select
    
    SpellNumber = Dollars & Cents
    
    End Function
    
    
    ' Converts a number from 100-999 into text
    
    Function GetHundreds(ByVal MyNumber)
    
    Dim Result As String
    
    If Val(MyNumber) = 0 Then Exit Function
    
    MyNumber = Right("000" & MyNumber, 3)
    
    ' Convert the hundreds place.
    
    If Mid(MyNumber, 1, 1) <> "0" Then
    
    Result = GetDigit(Mid(MyNumber, 1, 1)) & " Hundred "
    
    End If
    
    ' Convert the tens and ones place.
    
    If Mid(MyNumber, 2, 1) <> "0" Then
    
    Result = Result & GetTens(Mid(MyNumber, 2))
    
    Else
    
    Result = Result & GetDigit(Mid(MyNumber, 3))
    
    End If
    
    GetHundreds = Result
    
    End Function
    
    
    ' Converts a number from 10 to 99 into text.
    
    
    Function GetTens(TensText)
    
    Dim Result As String
    
    Result = "" ' Null out the temporary function value.
    
    If Val(Left(TensText, 1)) = 1 Then ' If value between 10-19...
    
    Select Case Val(TensText)
    
    Case 10: Result = "Ten"
    
    Case 11: Result = "Eleven"
    
    Case 12: Result = "Twelve"
    
    Case 13: Result = "Thirteen"
    
    Case 14: Result = "Fourteen"
    
    Case 15: Result = "Fifteen"
    
    Case 16: Result = "Sixteen"
    
    Case 17: Result = "Seventeen"
    
    Case 18: Result = "Eighteen"
    
    Case 19: Result = "Nineteen"
    
    Case Else
    
    End Select
    
    Else ' If value between 20-99...
    
    Select Case Val(Left(TensText, 1))
    
    Case 2: Result = "Twenty "
    
    Case 3: Result = "Thirty "
    
    Case 4: Result = "Forty "
    
    Case 5: Result = "Fifty "
    
    Case 6: Result = "Sixty "
    
    Case 7: Result = "Seventy "
    
    Case 8: Result = "Eighty "
    
    Case 9: Result = "Ninety "
    
    Case Else
    
    End Select
    
    Result = Result & GetDigit _
    
    (Right(TensText, 1)) ' Retrieve ones place.
    
    End If
    
    GetTens = Result
    
    End Function
    
    
    ' Converts a number from 1 to 9 into text.
    
    Function GetDigit(Digit)
    
    Select Case Val(Digit)
    
    Case 1: GetDigit = "One"
    
    Case 2: GetDigit = "Two"
    
    Case 3: GetDigit = "Three"
    
    Case 4: GetDigit = "Four"
    
    Case 5: GetDigit = "Five"
    
    Case 6: GetDigit = "Six"
    
    Case 7: GetDigit = "Seven"
    
    Case 8: GetDigit = "Eight"
    
    Case 9: GetDigit = "Nine"
    
    Case Else: GetDigit = ""
    
    End Select
    
    End Function
  4. Incollare le righe di codice nella casella Modulo1 (codice).

    Codice incollato nella casella Modulo1 (codice).
  5. Premere ALT + Q per tornare a Excel. La funzione SpellNumber è ora pronta per l'uso.

    Nota: Questa funzione funziona solo per la cartella di lavoro corrente. Per usare questa funzione in un'altra cartella di lavoro, è necessario ripetere la procedura per copiare e incollare il codice nella cartella di lavoro.

Inizio pagina

Usare la funzione SpellNumber in singole celle

  1. Digitare la formula = SpellNumber(a1) nella cella in cui si vuole visualizzare un numero scritto, dove a1 è la cella contenente il numero che si vuole convertire. Puoi anche digitare manualmente il valore like = SpellNumber (22.50).

  2. Premere invio per confermare la formula.

Inizio pagina

Salvare la cartella di lavoro con funzione SpellNumber

Excel non è in grado di salvare una cartella di lavoro con funzioni macro nel formato di cartella di lavoro senza macro standard (xlsx). Se si fa clic su File > Salva. Verrà visualizzata una finestra di dialogo VB Project . Fare clic su No.

Nella finestra di dialogo Progetto VB fare clic su No.

È possibile salvare il file come cartella di lavoro di Excel Macro-Enabled (con estensione xlsm) per conservare il file nel formato corrente.

  1. Fare clic su File > Salva con nome.

  2. Fare clic sul menu a discesa Salva con nome e selezionare Excel Macro-Enabled cartella di lavoro.

  3. Fare clic su Salva.

Inizio pagina

Vedere anche

Funzione TESTO

Serve aiuto?

Amplia le tue competenze su Office
Esplora i corsi di formazione
Ottieni in anticipo le nuove caratteristiche
Partecipa al programma Office Insider

Queste informazioni sono risultate utili?

Grazie per il feedback!

Grazie per il tuo feedback! Potrebbe essere utile metterti in contatto con uno dei nostri operatori del supporto di Office.

×