Mantenimento della precisione delle cifre significative (Microsoft Excel)
Ken ha chiesto se è possibile mantenere il numero di cifre significative sui valori immessi in Excel. Ad esempio, “12.345600” e “1.230”.
La risposta breve, Ken, è che non puoi. Perché? Perché Excel trasforma sempre internamente tutto in 15 cifre significative. Questo, se si immette 12 o 12.0 o 12.00000, Excel li considera sempre uguali a 12.0000000000000, anche se questo potrebbe non essere tecnicamente corretto nel vero senso matematico. Inoltre, poiché Excel converte tutto in 15 cifre significative, tronca eventuali zeri finali in qualsiasi numero visualizzato utilizzando il formato numero generale.
(Dovrebbe essere ovvio dalla spiegazione precedente che i termini “cifre significative”, “precisione” e “numero di cifre decimali” significano cose completamente diverse. Ad esempio, il numero 12.000 ha tre cifre decimali, ma ha cinque cifre significative. (Sono sicuro che i teorici della matematica tra il pubblico saranno fin troppo contenti di correggermi se sbaglio.)
Puoi usare un formato numerico personalizzato per le singole celle, che mostrerà il tuo informazioni utilizzando il numero corretto di cifre significative, ma ciò non influirà sul funzionamento interno di Excel. Ad esempio, è possibile formattare una cella per visualizzare 12 o 12.0 o 12.00000, ma ciò non cambia il fatto che Excel considera ancora tutti i numeri in essere 12.0000000000000.
Un modo per aggirare questo problema è inserire i tuoi numeri come testo, mettendo un apostrofo davanti a loro. In altre parole, invece di inserire 12.0 dovresti inserire ’12 .0. Excel quindi analizza la voce come testo (a causa dell’apos trophe) e visualizza 12.0 nella cella. L’unico svantaggio di questo approccio è che non è possibile fare riferimento direttamente alla cella in tutte le funzioni matematiche; alcuni di essi restituiranno un errore perché includi ciò che Excel considera come testo nella funzione. Il modo più semplice per gestirlo è assicurarsi di includere la funzione = VALUE come parte della formula complessiva. Ad esempio, se inserisci un numero come testo nella cella B7 e quindi devi fare riferimento ad esso in una formula, potresti farlo in questo modo:
=VALUE(B7) * 100
Funziona alla grande per le formule con riferimenti a cella singola. Tuttavia, non funziona bene per i riferimenti di intervallo. Se è necessario eseguire una somma o una media su un intervallo di valori immessi come testo, Excel si bloccherà ogni volta, restituendo un errore in base a ciò che la funzione sta cercando di fare.
Questo ci porta alla seconda potenziale soluzione: mantenere separate le cifre significative o il numero di decimali dal valore effettivo. Per molti scopi matematici tecnici, questo è il modo migliore per gestire la situazione. Ad esempio, nella colonna C puoi inserire i tuoi numeri, come numeri. Excel, ovviamente, li converte internamente in 15 cifre significative. Nella colonna D puoi inserire vari numeri che rappresentano il numero di posizioni decimali che vuoi applicare ai valori nella colonna C. Potresti quindi usare i valori nella colonna D per aiutare nelle formule che si riferiscono ai valori nella colonna C.
Una potenziale soluzione finale è semplicemente formattare ogni singola cella in modo che mostri solo il numero di posizioni decimali che si desidera visualizzare.
Con l’avvertenza di cui sopra (che tale formattazione non influisce sulla rappresentazione interna dei numeri da Excel), questa potrebbe essere la soluzione migliore. Ovviamente, regolare individualmente la formattazione del display di un paio di celle è facile, ma farlo su cento o cinquecento celle è una storia diversa. È qui che una macro può tornare utile. Considera la seguente macro:
Sub SigPlaces() Dim c As Range Dim strcell As String, NumFormat As String, DecSep As String Dim DecPtLoc As Integer, stringLen As Integer Dim numDecPlaces As Long DecSep = "." For Each c In Selection.Cells strcell = c.Value If IsNumeric(strcell) Then NumFormat = "#0" DecPtLoc = InStr(strcell, DecSep) If DecPtLoc > 0 Then NumFormat = NumFormat & DecSep stringLen = Len(strcell) numDecPlaces = stringLen - DecPtLoc NumFormat = NumFormat & String(numDecPlaces, "0") End If c.Value = Val(strcell) c.NumberFormat = NumFormat End If Next c End Sub
Se inserisci i tuoi numeri come testo (con l’apostrofo, menzionato sopra), puoi quindi selezionare le celle ed eseguire questa macro. Le voci di testo vengono convertite in numeri e la formattazione applicata a tali celle viene modificata in modo che venga visualizzato lo stesso numero di cifre decimali immesso nella voce di testo.
_Nota: _
Se desideri sapere come utilizzare le macro descritte in questa pagina (o in qualsiasi altra pagina dei siti ExcelTips), ho preparato una pagina speciale che include informazioni utili.
ExcelTips è la tua fonte di formazione economica su Microsoft Excel.
Questo suggerimento (2045) si applica a Microsoft Excel 97, 2000, 2002 e 2003.