Formato Numero Personalizzato decimaleemigliaia
Hai un problema con Excel? 
Formato Numero Personalizzato - decimale&migliaia
di Scarcagnizzu data: 11/09/2012 13:05:34
Ciao
Sono nuova del forum ed ho una domanda di cui mi vergogno. Devo presentare un prospetto in excel e mi hanno chiesto di presentare i dati con i separatore decimale e migliaia invertiti (in sintesi: come separatore di migliaia la virgola invece del punto e decimale, il punto anzichè la virgola).
Ovviamente se procedo da "Opzioni di Excel" - Impostazioni avanzate, questa modifica va ad impattare su tutti i file. Volevo sapere se esiste un codice da poter inserire in "Personalizzato" del formato numero, in modo da poterlo utilizzare solo quando serve.
Non so se sono stata abbastanza chiara.
Vi ringrazio
di xxx (utente non iscritto) data: 11/09/2012 14:10:56
ciao
per fare questo devi utilizzare delle macro nel file in questione
queste vanno messe in ThisWorkbook e non fanno altro che all'apertura del file invertono l'ordine e alla chiusura di questi impostano di nuovo i dati standard
vedi anche il file allegato
ciao
''ThisWorkbook
Option Explicit
Private Sub Workbook_BeforeClose(Cancel As Boolean) ''chiude e Ripristina dati standar
With Application
.DecimalSeparator = ","
.ThousandsSeparator = "."
.UseSystemSeparators = True
End With
End Sub
''ThisWorkbook
Private Sub workbook_open()
With Application
.DecimalSeparator = "."
.ThousandsSeparator = ","
.UseSystemSeparators = False
End With
End Sub
|
di Scarcagnizzu data: 11/09/2012 18:22:36
Ciao.....premetto che non ho mai usato una macro in vita mia, ma mi sembra che questa non faccia altro che replicare la modifica delle impostazioni di excel di cui parlavo prima
Speravo ci fosse un metodo molto più immediato, anche perchè
all'interno dello stesso worksheet vorrei poter rappresentare gli importi in entrambi i modi.
Per questo speravo ci fosse un formato numero - personalizzato da inserire in Formato CELLE - Numero - Personalizzato.
Grazie comunque.
A presto
di Vecchio Frac data: 11/09/2012 18:27:21
cit. "Sono nuova del forum ed ho una domanda di cui mi vergogno."
Aggiungo che non ci si deve mai vergognare di porre domande o problemi.
Il trick di xxx ovviamente è perfetto anche se può stare in un Activate del Sheet senza scomodare addirittura l'Open del Workbook ^_^
di xxx (utente non iscritto) data: 11/09/2012 18:53:49
ciao Vecchio Frac
infatti l'idea di partenza era di utilizzare una macro nel foglio con l'evento Activate della sheet quando questa veniva selezionata, ma poi ho ripiegato sullevento open per non dare piu' di tante spiegazioni a riguardo
comunque se la nostra amica vuol utilizzare l'evento in questine nel singolo foglio basta che inserisca nel foglio dove deve fare questa variazione la macro sotto citata e nelle celle faccia la formattazione personalizzata del tipo #.##0,00 e dopo quando per la prima volta attivera' il foglio la formattazione della cella passera' da 1.234,56 Standard a 1,234.56 come aveva chiesto in partenza
ciao da xxx
Private Sub Worksheet_Activate()
With Application
.DecimalSeparator = "."
.ThousandsSeparator = ","
.UseSystemSeparators = False
End With
End Sub |
di Vecchio Frac data: 11/09/2012 19:27:21
Grazie xxx (nick più anonimo non potevi scegliere ^_^)
Così mi piace... formazione & informazione per i nostri utenti :)
di Scarcagnizzu data: 12/09/2012 08:52:39
Grazie.
Facciamo così....torno quando ne capirò un pò di più di VBA.
Piuttosto: non è che mi potete consigliare dei testi o dei corsi on-line?
Grazie ancora
Ci risentiamo fra qualche mese
di Vecchio Frac data: 12/09/2012 09:22:43
Tra qualche mese? Speriamo di rileggerti prima ^_^
Comunque no, che io sappia (ho cercato) non esistono alternative mediante la personalizzazione del formato del numero. I
Puoi costruire una funzione personalizzata con un booleano True o False che indica quale formato utilizzare, da richiamare nel foglio di lavoro, e dovrai convertire il numero in testo sostituendo i separatori come conviene; l'unico inconveniente è che ottieni una stringa invece che un numero:
=FORMATTA_NUMERO(5.655,13) --> "5.655,13"
=FORMATTA_NUMERO(5.655,13;VERO) --> "5.655,13"
=FORMATTA_NUMERO(5.655,13;FALSO) --> "5,655.13"
'In un Modulo
Option Explicit
Public Function formatta_numero(num As Long, Optional system_separators As Boolean = True) As String
Dim s As String
s = Format(num, "0,00.00")
If CStr(num) = 0 Then
formatta_numero = "0"
Else
If Not system_separators Then
s = Replace(s, ".", "@")
s = Replace(s, ",", ".")
s = Replace(s, "@", ",")
End If
formatta_numero = s
End If
End Function |
Vuoi Approfondire?