Condividi:        

excel notazione scentifica

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

excel notazione scentifica

Postdi wallace&gromit » 13/08/12 10:01

Ciao a tutti,
pensate che sia possibile modificare il modo in cui excel rappresenta i decimali?
Per esempio 0.00004 viene rappresentato come 4.0E-05, ma in "lingua comune" si usa piuttosto 4.0 . 10-5 (con -5 in forma di apice). Mi piacerebbe fare apparire questa notazione, ma con il formato personalizzato non ci riesco, c'è qualche altra via?
Office2016 + 2019 su win11
Avatar utente
wallace&gromit
Utente Senior
 
Post: 2174
Iscritto il: 16/01/12 14:21

Sponsor
 

Re: excel notazione scentifica

Postdi Flash30005 » 13/08/12 10:18

Se è soltanto per una visualizzazione puoi realizzare una macro che pone un apice prima del numero trasformando in testo ciò che calcolerai con macro
ma, così facendo, non potrai utilizzare per calcoli quella cella.

ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: excel notazione scentifica

Postdi wallace&gromit » 13/08/12 13:58

eh purtroppo il valore deve rimanere tale, visto che è il risultato di un calcolo e che a sua volta può servire per calcoli successivi.
Office2016 + 2019 su win11
Avatar utente
wallace&gromit
Utente Senior
 
Post: 2174
Iscritto il: 16/01/12 14:21

Re: excel notazione scentifica

Postdi Anthony47 » 13/08/12 23:34

Se l' estetica e' veramente importante allora si puo' sempre separare la parte da usare come Output (su cui si lavora trasformando il numero in stringa) e quella destinata ai calcoli, dove i numeri sono numeri qualunque sia la loro formattazione.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: excel notazione scentifica

Postdi wallace&gromit » 14/08/12 10:02

Allora, faccio di necessità virtù e provo a fare un collegamento in forma di testo sulla cella col valore.
Ho preparato una sub che funziona, ma non riesco a trasformarla in function (preferirei averla in questa forma).
Ecco i miei codici,
la sub funzionante:
Codice: Seleziona tutto
Sub Scientifico2()
fatt = 1
myVal = Range("C3").Value
Do Until myVal > 1
myVal = myVal * 10
fatt = fatt + 1
Loop
scientific = myVal & " . 10-" & fatt
Range("E3").Value = scientific
Range("E3").Select
With ActiveCell.Characters(Len(scientific) - 1, Length:=2).Font
.Superscript = True
End With
End Sub

la funzione che non funziona!
Codice: Seleziona tutto
Function Scientifico(myVal As Double)
fatt = 1
Do Until myVal > 1
myVal = myVal * 10
fatt = fatt + 1
Loop
scientific = myVal & " . 10-" & fatt
Scientifico = scientific
With ActiveCell.Characters(Len(scientific) - 1, Length:=2).Font
.Superscript = True
End With
End Function
so anche io perchè non funziona: l'ultima istruzione arriva dopo avere già concluso l'operazione di scrittura, però non so come ovviare a questo problema.
Office2016 + 2019 su win11
Avatar utente
wallace&gromit
Utente Senior
 
Post: 2174
Iscritto il: 16/01/12 14:21

Re: excel notazione scentifica

Postdi Anthony47 » 15/08/12 01:15

Humm... non spieghi in che senso non ti funziona, ma immagino che ti sorprenda il fatto che non riesci a mettere in Apice l' esponente.
Purtroppo questo e' normale, in quanto una function non puo' manipolare il formato delle celle; per quello che ne so e' un limite invalicabile, quindi se vuoi proprio ottenere l' effetto devi usare i caratteri unicode corrispondenti ai simboli che vuoi rappresentare; un po' come avevamo fatto tempo fa con la Function chemical (ricordi? Vedi viewtopic.php?f=26&t=95492&p=547433#p547369)
Come difficolta' residua c' e' che la codifica dei superscript non e' sequenziale; se 0=2070(hex), 4=2074, 5=2075 etc i superscript di 1-2-3 sono rispettivamente 00B9, 00B2 e 00B3

Mi sembra anche che il tuo algoritmo sbagli di una grandezza (es 0,0012345 viene tradotto in 1,2345 . 10-4), che sia ambiguo sui numeri positivi (es 22,3456 viene tradotto con 22,3456 . 10-0, una volta corretto l' errore dell' esponente), che vada in crisi con valori negativi e che soprattutto mandi in crisi il pc se myVal e' Zero.

Cio' detto la mia Function Expo e' la seguente:
Codice: Seleziona tutto
Function Expo(ByVal myVal As Double, Optional ByVal myDecimal As Long = 15) As String
'by Anthony47, vedi http://www.pc-facile.com/forum/viewtopic.php?f=26&t=96534
'Trasforma un numero in una stringa rappresentante la sua notazione scientifica
'Uso:
'=Expo(ilNumero[;NumeroDecimali])
'
'Se NumeroDecimali e' omesso verranno presentati i decimali presenti, ma max 14
' (e' il limite di excel...)
'
'RICHIEDE la presenza anche della Function Superscr
'
Dim GSign As String, Sign As String, Espon As String
Dim Posit As Long, I As Long, Fatt As Long
'
'Gestione positivo/negativo
If myVal < 0 Then GSign = "-": myVal = Abs(myVal)
'Gestione valore 0
If myVal = 0 Then Expo = "0,0": Exit Function
'Gestione segno potenza
If myVal < 1 Then Sign = ChrW(8315) 'Else Sign = ChrW(8314)  '8314="+"
'
'Gestione numeri superiori a 10
Posit = 0
Do Until myVal < 10#
myVal = myVal / 10#
Posit = Posit + 1: DoEvents
Loop
'
'Gestione numeri inferiori a 1
Fatt = 0
Do Until myVal >= 1#
myVal = myVal * 10#
Fatt = Fatt + 1: DoEvents
Loop
'
'Esporta risultati
Espon = (Fatt + Posit)
Expo = GSign & Left(myVal, myDecimal + 2)
If Espon > 0 Then
    Expo = Expo & " * 10" & Sign & Superscr(Espon)
End If
End Function

Function Superscr(ByVal Esponente As Long) As String
'restituisce una stringa con caratteri unicode corrispondente al valore
'   "Esponente" in superscript
'   Max 9 digit!
'
If Esponente > 9 Then UStr = Superscr(Int(Esponente / 10))
Esponente = Esponente Mod 10
Select Case Esponente
    Case 1
    Superscr = ChrW(185)
    Case 2
    Superscr = ChrW(178)
    Case 3
    Superscr = ChrW(179)
    Case Else
    Superscr = ChrW(8304 + Esponente)
End Select
Superscr = UStr & Superscr
End Function

Uso:
-inserire in un Modulo standard del vba (non un modulo di foglio) e poi usare una formula del tipo
Codice: Seleziona tutto
=Expo(ilNumero[;NumeroDecimali])

Se NumeroDecimali e' omesso verranno presentati i decimali presenti, max 14
(e' il limite di excel...)

Notate che il codice di sopra contiene DUE funzioni; la Function Expo, che fa la conversione di cui stiamo parlando ma si appoggia alla Function Superscr. Questa seconda e' quella che realizza la conversione dell' esponente in caratteri "superscript", e puo' anch' essa essere usata il formule del tipo
Codice: Seleziona tutto
=Superscr(Numero)
che restituiranno una stringa con quel numero in superscript, anche in formule piu' articolate quali
Codice: Seleziona tutto
="E=MC"&Superscr(2)

Ricordate che non tutti i font supportano bene i caratteri superscript unicode; se la resa non e' decorosa cercate un altro font (es Calibri, oppure anche Arial Unicode)

Ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: excel notazione scentifica

Postdi wallace&gromit » 16/08/12 07:50

Perfetto Anthony, come sempre hai svolto un lavoro completo e funzionante.
Ho ripensato anche io al Calibri, ma speravo funzionasse con l'Arial normale.
In genere non arrivo nemmeno all'esponente -9, quindi il margine è più che sufficiente.
Grazie mille!
Office2016 + 2019 su win11
Avatar utente
wallace&gromit
Utente Senior
 
Post: 2174
Iscritto il: 16/01/12 14:21

Re: excel notazione scentifica

Postdi Anthony47 » 16/08/12 22:37

In genere non arrivo nemmeno all'esponente -9, quindi il margine è più che sufficiente
I calcoli vengono fatti con 15 cifre significative, l' esponente puo' andare da -324 a +308; si, il margine e' piu' che sufficiente... :D :D

Ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "excel notazione scentifica":


Chi c’è in linea

Visitano il forum: Nessuno e 59 ospiti