Convertire un numero da cifre a lettere (UDF)

Documenti analoghi
Convertire numeri da lettere a cifre (UDF)

CHIAVE CERCA LE PAROLE DIVISIONE ADDIZIONE. Nell'addizione le parole chiave si trovano nella domanda.

Anagrammi e combinazioni con ripetizione

Codici a barre - Seconda parte (EAN 8 ed EAN 13)

Utilizzare le RegExp e IE per esplorare il Web

GLOSSARIO MATEMATICO. ,0,, 2, 3,,... = {razionali e irrazionali}

LE AVVENTURE DI PINOCCHIO

Elenchi univoci funzioni di ordinamento e verifica chiave

LE AVVENTURE DI PINOCCHIO

Calcolo del Bollo auto (UDF con IE)

Rimuovere la password dalle protezioni di foglio e cartella in Excel

Unità 1 Una nuova collega

PREREQUISITI STRUTTURA DEL NUMERO

28/02/2014 Copyright V. Moriggia

Come tutti i bambini, anche i figli di Mago Um

U Corso di italiano, Lezione Tredici

Lezione. SEQUENZA 1 la mia giornata

MI PRESENTO UNITÁ 3. Mi chiamo Abeba Desta. Ho 24 anni. Sono nata in Etiopia, ad Adis Abeba, il 5 marzo Sono sposata da 4 anni ed

Excel & VBA. Excel e Visual Basic for Application

I NUMERI NATURALI. Per cominciare impariamo a leggere alcuni numeri naturali e dopo prova a scriverli nella tua lingua:

Strutture pedonali

CORSO DI ITALIANO PER STRANIERI VIGEVANO I CIRCOLO A.S

VBA Principali Comandi

FOTO RELATIVE ALLA BICICLETTA NR. 2 (DUE)

BATTERIA DI TEST PER L ACALCULIA

INDICE. MOD. 5 L INDAGINE STATISTICA Come si svolge un indagine statistica... Verifica...» 121

Numeri interi positivi

Corso di Visual Basic (Parte 9)

NEW UNO. I

Utilizzo del linguaggio Basic utilizzando l interfaccia di Excel Silvia Patacchini


Plus srl :: :: :: Via Morgagni, 4/A Verona :: Tel :: Fax

Algoritmi e dintorni: La radice quadrata Prof. Ettore Limoli. Formule iterative

NEW UNO. I CARTELLA IN PELLE A UNO SCOMPARTO INTERNO ORGANIZZATO E ZIP ESTERNA

Le variabili di Visual Basic consentono di memorizzare temporaneamente valori durante

PREZZIARIO MARCHE 2008

ELENCO PREZZI UNITARI

VISUAL BASIC FOR APPLICATION

Corso basi di dati Introduzione al VBScript

Introduzione a Visual Basic Lezione 1 Concetti base e istruzioni condizionali

Excel & VBA. Excel e Visual Basic for Application

OTTAVA LEZIONE VERSO IL MARE

Relazione del programma di statistica: Curva di Gauss.

GESTIONE DI MDB in WEB

ELENCO PREZZI. Mario Rossi. Committente: Ristrutturazione rustico. Lavori: Rovigo, 23 settembre 2005

TOP DOWN. Preparati per il compito in classe Modulo 5

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Reti di Calcolatori

Introduzione alla Programmazione e Applicazioni per la Finanza M2 (Prodotti Derivati) Lezione 13

Applicazioni grafiche

VBScript. VBScript. Visual Basic Scripting Edition. Linguaggio di script per browser e server Microsoft Deriva da Visual Basic, ma è interpretato

Visual basic base Lezione 13. Ancora su ListBox e cicli

Data Mining Algoritmi e Programmazione

Sviluppare un programma in FORTRAN

TRIBUNALE DI TRIESTE ESECUZIONE MOBILIARE N Giudice dell Esecuzione: Dott. David Di Paoli Paulovich AVVISO PER LA RACCOLTA DI OFFERTE

CODICE FISCALE. Cos'è e a cosa serve

U Corso di italiano, Lezione Diciassette

Art. Descrizione U.m. Prezzo 1 MANO D'OPERA 1.1 Idraulico installatore qualificato. h 27,00 (Euro ventisette) 1.2 Idraulico aiutante od operaio.

Verifica della correttezza formale del numero di partita IVA

Unità. Quanti anni hai? Verbo Avere (Presente Indicativo) hai? Lui/Lei ha. oggi abbiamo un nuovo compagno di scuola.

Decine e unità 1 Raggruppa per 10 e registra in tabella.

Mi piacerebbe condividere con voi una funzione che ho realizzato per rispondere ad una richiesta posta nella Sezione Visual Basic 6 su MasterDrive.it.

IMPOSTAZIONI DI EXCEL. Per rendere disponibile l ambiente di sviluppo di Visual Basic for Application in Excel:

OLIVETTI NETTUNA (tutti i modelli), PRT100/200 FX, OPEN, LOGIC e compatibili

Programmazione con il linguaggio LibreOffice Basic

PERCORSI OPERATIVI SPECIFICI PER LA CONOSCENZA ED IL CORRETTO UTILIZZO DELL EURO.

M.U.T. Modulo Unico Telematico. Specifiche tecniche interfaccia automatica per i Software Gestionali

Lezione 1. Chiavi degli esercizi. Coordinatrice didattica: Paola Baccin

IL COMPLEANNO DI FATIMA

Bianca Pitzorno. libera. Illustrazioni di Lorenzo Terranera

Piccola guida a VBA per Word

Introduzione a Visual Basic Premessa

VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole.

TITOLO DIGITALE. Come da Unico dtd nel plico XML potrà essere inserito il titolo digitale:

RTS DISPLAY DLL MANUALE D USO CUSTOM ENGINEERING. e compatibili (con protocollo Custom Nativo su linea seriale RS-232) Versione

Struttura logica di un programma

TITOLO DIGITALE. Come da Unico dtd nel plico XML potrà essere inserito il titolo digitale:

DAL DIAGRAMMA AL CODICE

Atto costitutivo- REPUBBLICA ITALIANA DATA STIPULA., iscritto nel ruolo dei Distretti Notarili Riuniti di. sono comparsi i signori:

Introduzione alla Programmazione e Applicazioni per la Finanza M2 (Prodotti Derivati) Lezione 9

Transcript:

Convertire un numero da cifre a lettere (UDF) Inviato da Roberto giovedì 09 aprile 2009 Ultimo aggiornamento giovedì 09 aprile 2009 Il Blog di Excelvba Per convertire un numero da cifre a lettere sono disponibili in internet diverse funzioni, ho deciso di scriverne una anch'io. Il risultato mi è sembrato interessante... E' possibile ottenere due formati a secondo dell'argomento opzionale "Tipo" che viene passato. Qui sotto i risultati a confronto: Numero 10^N Fino_miliardi Direttiva_CEE 10 10^1 dieci dieci 100 10^2 cento cento 1.000 10^3

mille mille 10.000 10^4 diecimila diecimila 100.000 10^5 centomila centomila 1.000.000 10^6 unmilione unmilione 10.000.000 10^7 diecimilioni diecimilioni

100.000.000 10^8 centomilioni centomilioni 1.000.000.000 10^9 unmiliardo unmiliardo 10.000.000.000 10^10 diecimiliardi diecimiliardi 100.000.000.000 10^11 centomiliardi centomiliardi 1.000.000.000.000 10^12 millemiliardi

unbilione 10.000.000.000.000 10^13 diecimilamiliardi diecibilioni 100.000.000.000.000 10^14 centomilamiliardi centobilioni 1.000.000.000.000.000 10^15 unmilione di miliardi unbiliardo 10.000.000.000.000.000 10^16 diecimilioni di miliardi diecibiliardi 100.000.000.000.000.000

10^17 centomilioni di miliardi centobiliardi 1.000.000.000.000.000.000 10^18 millemilioni di miliardi untrilione 10.000.000.000.000.000.000 10^19 diecimilamilioni di miliardi diecitrilioni 100.000.000.000.000.000.000 10^20 centomilamilioni di miliardi centotrilioni All''inizio del codice c è una routine che crea la tabella sul foglio attivo. Buon lavoro a tutti. Saluti r

Option Explicit Public Enum Tipo_Numerazione Fino_miliardi = 0 Direttiva_CEE = 1 End Enum Sub Numeri_e_lettere() Dim v, i As Long Dim rng As Excel.Range Dim sh As Excel.Worksheet 'per vedere il risultato passando i due possibili 'argomenti alla funzione Da_Numeri_a_lettere Set rng = [A1] v = Array("Numero", "Fino_miliardi", "Direttiva_CEE") For i = 0 To UBound(v) rng.offset(0, i) = v(i) Next For i = 1 To 20 rng.offset(i, 0) = CDec(10 ^ i) rng.offset(i, 0).NumberFormat = "#,##0" rng.offset(i, 1) = Da_Numeri_a_lettere(10 ^ i, Fino_miliardi) rng.offset(i, 2) = Da_Numeri_a_lettere(10 ^ i, Direttiva_CEE) Next Set sh = rng.parent sh.cells.entirecolumn.autofit End Sub Function Da_Numeri_a_lettere( _

ByVal Numero As Double, _ Optional Tipo As Tipo_Numerazione = Fino_miliardi) As String ' ' 'Di Roberto Mensa nick r ' ' Dim s As String Dim res As String If Numero = 0 Then Da_Numeri_a_lettere = "" Exit Function s = CStr(CDec(Numero)) If Len(s) <> Len(Replace(s, ",", "")) Or Len(s) > 21 Then Da_Numeri_a_lettere = "#VALORE!" Exit Function Select Case Len(s) Case 1, 2, 3 Da_Numeri_a_lettere = Da_1_a_99(Numero) Case 4, 5, 6 If Numero < 2000 Then Da_Numeri_a_lettere = "mille" & _ Da_1_a_99(Numero Mod 1000) Else Da_Numeri_a_lettere(Int(Numero / 1000)) & _ "mila" & _ Da_1_a_99(Numero Mod 1000)

Case 7, 8, 9 If Numero < 2000 * 10 ^ 3 Then Da_Numeri_a_lettere = "unmilione" & _ Da_Numeri_a_lettere(Numero - 10 ^ 6) Else Da_Numeri_a_lettere(Int(Numero / 10 ^ 6)) & _ "milioni" & _ Da_Numeri_a_lettere(Numero Mod 10 ^ 6) Case 9 To 15 If Numero < 2000 * 10 ^ 6 Then Da_Numeri_a_lettere = "unmiliardo" & _ Da_Numeri_a_lettere(Numero - 10 ^ 9) ElseIf Tipo = Direttiva_CEE Then If Numero < 10 ^ 12 Then Da_Numeri_a_lettere(Int(Numero / 10 ^ 9)) & _ "miliardi" & _ Da_Numeri_a_lettere(Numero - (Int(Numero / 10 ^ 9) * 10 ^ 9)) ElseIf Numero < 2000 * 10 ^ 9 Then Da_Numeri_a_lettere = "unbilione" & _ Da_Numeri_a_lettere(Numero - 10 ^ 12) Else Da_Numeri_a_lettere(Int(Numero / 10 ^ 12)) & _ "bilioni" & _ Da_Numeri_a_lettere(Numero - (Int(Numero / 10 ^ 12) * 10 ^ 12)) ElseIf Tipo = Fino_miliardi Then Da_Numeri_a_lettere(Int(Numero / 10 ^ 9)) & _

"miliardi" & _ Da_Numeri_a_lettere(Numero - (Int(Numero / 10 ^ 9) * 10 ^ 9)) Case 16 To 21 If Tipo = Direttiva_CEE Then If Numero < 2000 * 10 ^ 12 Then Da_Numeri_a_lettere = "unbiliardo" & _ Da_Numeri_a_lettere(Numero - 10 ^ 15) ElseIf Numero < 10 ^ 18 Then Da_Numeri_a_lettere(Int(Numero / 10 ^ 15)) & _ "biliardi" & _ Da_Numeri_a_lettere(Numero - (Int(Numero / 10 ^ 15) * 10 ^ 15)) ElseIf Numero < 2000 * 10 ^ 15 Then Da_Numeri_a_lettere = "untrilione" & _ Da_Numeri_a_lettere(Numero - 10 ^ 18) Else Da_Numeri_a_lettere(Int(Numero / 10 ^ 18)) & _ "trilioni" & _ Da_Numeri_a_lettere(Numero - (Int(Numero / 10 ^ 18) * 10 ^ 18)) ElseIf Tipo = Fino_miliardi Then If Numero < 2000 * 10 ^ 12 Then Da_Numeri_a_lettere = "unmilione di miliardi" & _ Da_Numeri_a_lettere(Numero - 10 ^ 15) Else Da_Numeri_a_lettere(Int(Numero / 10 ^ 15)) & _ "milioni di miliardi" & _ Da_Numeri_a_lettere(Numero - (Int(Numero / 10 ^ 15) * 10 ^ 15))

End Select End Function Function Da_1_a_99( _ ByVal Numero As Long) As String ' ' 'Di Roberto Mensa nick r ' ' Dim Dic As Object Dim s As String Dim sarr() As String Dim i As Long Set Dic = CreateObject("Scripting.Dictionary") If Numero = 0 Then Exit Function s = "uno due tre quattro cinque sei sette " & _ "otto nove dieci undici dodici tredici " & _ "quattordici quindici sedici diciassette " & _ "diciotto diciannove" sarr = Split(s, " ") For i = 0 To UBound(sArr) Dic.Add i + 1, sarr(i) Next s = "venti trenta quaranta cinquanta s" & _ "essanta settanta ottanta novanta" sarr = Split(s, " ")

For i = 0 To UBound(sArr) Dic.Add (i + 2) * 10, sarr(i) Next s = "ventuno trentuno quarantuno cinqu" & _ "antuno sessantuno settantuno otta" & _ "ntuno novantuno" sarr = Split(s, " ") For i = 0 To UBound(sArr) Dic.Add (i + 2) * 10 + 1, sarr(i) Next s = "ventotto trentotto quarantotto ci" & _ "nquantotto sessantotto settantott" & _ "o ottantotto novantotto" sarr = Split(s, " ") For i = 0 To UBound(sArr) Dic.Add (i + 2) * 10 + 8, sarr(i) Next Select Case Numero Case 1 To 99 Da_1_a_99 = Dic.Item(Numero) If Len(Da_1_a_99) = 0 Then Da_1_a_99 = Dic.Item(Int(Numero / 10) * 10) & _ Dic.Item(Numero Mod 10) Case 100 To 199 Da_1_a_99 = _ "cento" & Da_1_a_99(Numero Mod 100) Case Else Da_1_a_99 = _

Da_1_a_99(Int(Numero / 100)) & _ "cento" & _ Da_1_a_99(Numero Mod 100) End Select End Function