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 funzione SpellNumber seguente in un modulo VBA (Visual Basic, Applications Edition). Questa funzione consente di convertire gli importi di euro e centesimi in parole con una formula, quindi 22,50 verrebbe letto come Twenty-Two dollari e cinquanta centesimi. Questo può risultare molto utile se si usa Excel come modello per stampare i 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 a titolo puramente illustrativo, senza alcuna garanzia espressa o implicita. Ciò include, a titolo esemplificativo e non esaustivo, le garanzie implicite di commerciabilità o idoneità a uno scopo particolare. Questo articolo presuppone che si abbia familiarità con il linguaggio di programmazione VBA e con gli strumenti usati per creare ed eseguire il debug di routine. I tecnici dell'assistenza Microsoft possono aiutare a spiegare la funzionalità di una particolare procedura. Tuttavia, non modificheranno questi esempi per fornire funzionalità aggiunte o creare procedure per soddisfare i requisiti specifici.
Creare la funzione SpellNumber per convertire i numeri in parole
-
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.
-
Fare clic sulla scheda Inserisci e fare clic su Modulo.
-
Copiare le righe di codice seguenti.
Nota: Noto come funzione definita dall'utente, questo codice automatizza l'attività di conversione dei 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
-
Incollare le righe di codice nella casella Modulo1 (codice).
-
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 i passaggi per copiare e incollare il codice nella cartella di lavoro.
Usare la funzione SpellNumber in singole celle
-
Digitare la formula =SpellNumber(A1) nella cella in cui si vuole visualizzare un numero scritto, dove A1 è la cella contenente il numero da convertire. È anche possibile digitare manualmente il valore come =SpellNumber(22,50).
-
Premere INVIO per confermare la formula.
Salvare la cartella di lavoro con funzione SpellNumber
Non è possibile salvare una cartella di lavoro con funzioni macro nel formato di cartella di lavoro standard senza macro (.xlsx). Se si fa clic su File > Salva. Viene visualizzata una finestra di dialogo Progetto VB. Fare clic su No.
È possibile salvare il file come cartella di lavoro di Excel Macro-Enabled (xlsm) per mantenere il file nel formato corrente.
-
Fare clic su File > Salva con nome.
-
Fare clic sul menu a discesa Tipo file e selezionare Excel Macro-Enabled cartella di lavoro.
-
Fare clic su Salva.