Newsgroup: it.comp.aiuto
Titolo: excel

Padova, 23.09.1999
Come si fa in Excel a trasformare  un numero - es. 45.800 -  nella cella
adiacente il suo valore in lettere - cioè quarantacinquemilaottocento?
Sergio
--
Posted from 
dns01.infocamere.it
 [193.70.148.50]
via Mailgate.ORG Server - 
http://www.mailgate.org

you wrote :
#Come si fa in Excel a trasformare  un numero - es. 45.800 -  nella cella
#adiacente il suo valore in lettere - cioè quarantacinquemilaottocento?
Scrivendo una macro apposita per questo.
Se vuoi te la scrivo e te la spedisco.
--------------------------------------------------------
* Andrea Laforgia        (
andrea_...@bigfoot.com
) *
--------------------------------------------------------

Cia Andrea
sono interessato anch'io a questo tipo di macro. Ti sarei grato se tu la
spedissi anche a me.
Grazie--
AndreaP


you wrote :
#>#Come si fa in Excel a trasformare  un numero - es. 45.800 -  nella cella
#>#adiacente il suo valore in lettere - cioè quarantacinquemilaottocento?
#Se, invece, lo vuoi senza macro ma con un normalissimo foglio di excel da
#copiare e incollare, te lo posso mandare io.
Le seguenti routine sono da inserire in un nuovo modulo dall'editor di
visual basic di excel e quindi utilizzare la funzione
trasforma_in_lettere() :
Function Trasforma_Gruppo(s As String) As String
Dim Ris As String
Dim us  As String
Dim ds  As String
Dim cs  As String
         u = Mid$(s, 3, 1)
         d = Mid$(s, 2, 1)
         c = Mid$(s, 1, 1)
 
         cs = ""
         ds = ""
         us = ""
 
         Select Case u
                Case "1": us = "uno"
                Case "2": us = "due"
                Case "3": us = "tre"
                Case "4": us = "quattro"
                Case "5": us = "cinque"
                Case "6": us = "sei"
                Case "7": us = "sette"
                Case "8": us = "otto"
                Case "9": us = "nove"
         End Select
 
         Select Case d
                Case "1": ds = "dieci"
                Case "2": ds = "venti"
                Case "3": ds = "trenta"
                Case "4": ds = "quaranta"
                Case "5": ds = "cinquanta"
                Case "6": ds = "sessanta"
                Case "7": ds = "settanta"
                Case "8": ds = "ottanta"
                Case "9": ds = "novanta"
         End Select
 
         Select Case c
                Case "1": cs = "cento"
                Case "2": cs = "duecento"
                Case "3": cs = "trecento"
                Case "4": cs = "quattrocento"
                Case "5": cs = "cinquecento"
                Case "6": cs = "seicento"
                Case "7": cs = "settecento"
                Case "8": cs = "ottocento"
                Case "9": cs = "novecento"
         End Select
 
         If ds = "dieci" Then
            us = ""
            Select Case u
                   Case "1": ds = "undici"
                   Case "2": ds = "dodici"
                   Case "3": ds = "tredici"
                   Case "4": ds = "quattordici"
                   Case "5": ds = "quindici"
                   Case "6": ds = "sedici"
                   Case "7": ds = "diciassette"
                   Case "8": ds = "diciotto"
                   Case "9": ds = "diciannove"
            End Select
         End If
 
         If (ds <> "") And (us = "uno") Then ds = Left$(ds, Len(ds) -
1)
 
         Ris = cs + ds + us
 
         Trasforma_Gruppo = Ris
End Function
Function Trasforma_in_lettere(n As Long) As String
Dim s As String
Dim ns As String
Dim grp1 As String
Dim grp2 As String
Dim grp3 As String
Dim grp4 As String
 
         ns = Str$(n)
         ns = Mid$(ns, 2)
         s = Left$("000000000000", 12 - Len(ns)) + ns
 
         grp1 = Trasforma_Gruppo(Right$(s, 3))
         grp2 = Trasforma_Gruppo(Mid$(s, 7, 1) + Mid$(s, 8, 1) +
Mid$(s, 9, 1))
         grp3 = Trasforma_Gruppo(Mid$(s, 4, 1) + Mid$(s, 5, 1) +
Mid$(s, 6, 1))
         grp4 = Trasforma_Gruppo(Left$(s, 3))
 
         If grp2 <> "" Then
            If grp2 = "uno" Then grp2 = "mille" Else grp2 = grp2 +
"mila"
         End If
 
         If grp3 <> "" Then
            If grp3 = "uno" Then grp3 = "unmilione" Else grp3 = grp3 +
"milioni"
         End If
 
         If grp4 <> "" Then
            If grp4 = "uno" Then grp4 = "unmiliardo" Else grp4 = grp4
+ "miliardi"
         End If
 
         Trasforma_in_lettere = grp4 + grp3 + grp2 + grp1
 
End Function


trasforma_in_lettere()
Perfetto: e questa e' la versione "macro".
Cosi' ce n'e' per tutti i gusti ;-)))
In effetti il foglio che ho elaborato, l'ho realizzato piu' o meno secondo
lo stesso criterio: suddivisione in gruppi di tre cifre, poi
traslitterazione gruppo per gruppo (con gestione delle eccezioni tipo
"ventiotto", "settantaotto" et similia) e poi ricomposizione del tutto.
Come detto, il foglio non e' parametrizzabile, a differenza della funzione.
Ma in ufficio e' piu' facile far capire a certa gente il copia e incolla
che le macro. ;-)))
-----------------------
Attenzione: L'indirizzo nell'intestazione e' stato alterato.
Warning: Header address has been altered.
Name: Pierluigi & Marina
Address: Ancona, Italy
E-Mail: 
pm_...@hotmail.com
-----------------------

you wrote :
#In effetti il foglio che ho elaborato, l'ho realizzato piu' o meno secondo
#lo stesso criterio: suddivisione in gruppi di tre cifre, poi
#traslitterazione gruppo per gruppo (con gestione delle eccezioni tipo
#"ventiotto", "settantaotto" et similia) e poi ricomposizione del tutto.
Accidenti ! geniale come sono non ho pensato a questa possibilita' !
ehehehhe....
In effetti basta modificare al riga 
If (ds <> "") And (us = "uno") Then ds = Left$(ds, Len(ds) - 1)
in 
If (ds <> "") And ( (us = "uno") or (us = "otto") ) Then ds =
Left$(ds, Len(ds) - 1)
--------------------------------------------------------






Scusate la ritrasmissione del testo precedente (m'è partito un
colpo mentre pulivo la pistola).
:-(
--
Alessandro