In un ambiente di ingegneria, non è insolito aver bisogno di “normalizzare”

numeri in qualche modo. Ad esempio, potrebbe essere necessario mostrare valori numerici normalizzati a multipli di 10 ^ 3, in modo tale che 7340 sia espresso come 7.34 e 73400 sia espresso come 73.4.

In Excel è possibile utilizzare un formato numerico personalizzato per esprimere informazioni in notazione scientifica che normalizzerà la visualizzazione di un numero a un multiplo di 10 ^ 3. Per fare questo, segui questi passaggi:

  1. Seleziona le celle che desideri formattare.

  2. Visualizza la scheda Home della barra multifunzione.

  3. Fare clic sulla piccola icona nell’angolo inferiore destro del gruppo Numero.

Excel visualizza la finestra di dialogo Formato celle.

  1. Assicurati che la scheda Numero sia selezionata. (Vedi figura 1.)

  2. Nell’elenco delle categorie di formato, scegli Personalizzato.

  3. Nella casella Tipo, inserisci ## 0.0E + 0 come formato. (Questo fornisce solo un numero a destra della cifra decimale. Se ne vuoi di più, aumenta il numero di zeri dopo la cifra decimale.)

  4. Fare clic su OK.

Ora, quando inserisci un numero come 7340 nella cella, Excel lo visualizza come 7.3E + 3. A causa del modo in cui è stato inserito il formato della cella, la parte dopo la E sarà sempre un multiplo di 3.

Questo va bene e va bene, ma cosa succede se si desidera solo il 7.3 nella cella e quindi un prefisso metrico con un’unità in una cella adiacente, come i chilogrammi? Questo è un po ‘più complesso, ma può essere fatto usando le formule. Ad esempio, supponiamo che tu abbia il tuo numero originale nella cella A2, volessi il numero normalizzato nella cella B2 e il prefisso della metrica e il nome dell’unità nella cella C2. Tutto quello che devi fare è inserire la seguente formula nella cella B2:

=IF(OR(A2>=1,A2<=-1),SIGN(A2)(ABS(A2)/(10^(3INT(LOG(ABS(A2))/3))))), IF(A2=0,0,SIGN(A2)(ABS(A2)10^(-3*INT(LOG(ABS(A2))/3)))))

Supponendo che le unità con cui stai lavorando siano un’unità immaginaria chiamata foo, nella cella C2 useresti una formula diversa, come segue:

=IF(OR(A2>=1, A2<=-1),CHOOSE(INT(LOG(ABS(A2))/3)+1, "Foos", "Kilofoos", "Megafoos", "Gigafoos", "Terafoos", "Petafoos", "Exafoos"), IF(A2=0,"",CHOOSE(INT(-LOG(ABS(A2))/3)+1, "Millifoos", "Microfoos", "Nanofoos", "Picofoos", "Femtofoos", "Attofoos")))

Queste formule possono sembrare un po ‘lunghe, e lo sono. Tuttavia, funzioneranno per qualsiasi numero compreso tra -9,99999E-18 e 9,99999E + 20 circa.

Ad esempio, se inserisci il numero .000125 nella cella A2, la cella B2 conterrà 125 e la cella C2 conterrà Millifoos.

Se preferisci non utilizzare formule più lunghe come queste nelle tue cartelle di lavoro, puoi sviluppare un paio di funzioni VBA per fare il trucco.

La seguente funzione, MySciNum, restituisce un numero normalizzato. Quindi, useresti = MySciNum (A2) nella cella B2 per ottenere gli stessi risultati come indicato sopra:

Function MySciNum(BaseNum As Double) As Double     Select Case BaseNum         Case Is >= 1             While Abs(BaseNum) > 1000                 BaseNum = BaseNum / 1000             Wend         Case 0             'Do nothing         Case Else             While Abs(BaseNum) < 1                 BaseNum = BaseNum * 1000             Wend     End Select     MySciNum = BaseNum End Function

Questa funzione restituisce solo un numero. Per restituire le unità con il prefisso metrico appropriato, utilizzare la seguente funzione. Tutto quello che devi fare è passargli il riferimento di cella e il nome di una singola unità.

Ad esempio, potresti usare = MySciPre (A2, “foo”). La macro è la seguente:

Function MySciPre(BaseNum As Double, Unit As String) As String     Dim OrigNum As Double     Dim Pref As Integer     Dim Temp As String

Pref = 0     OrigNum = BaseNum     Select Case BaseNum         Case Is >= 1             While Abs(BaseNum) > 1000                 BaseNum = BaseNum / 1000                 Pref = Pref + 1             Wend         Case 0             Pref = 99         Case Else             While Abs(BaseNum) < 1                 BaseNum = BaseNum * 1000                 Pref = Pref - 1             Wend     End Select

Select Case Pref         Case -6             Temp = "atto" & Unit         Case -5             Temp = "femto" & Unit         Case -4             Temp = "pico" & Unit         Case -3             Temp = "nano" & Unit         Case -2             Temp = "micro" & Unit         Case -1             Temp = "milli" & Unit         Case 0             Temp = Unit         Case 1             Temp = "kilo" & Unit         Case 2             Temp = "mega" & Unit         Case 3             Temp = "giga" & Unit         Case 4             Temp = "tera" & Unit         Case 5             Temp = "peta" & Unit         Case 6             Temp = "exa" & Unit         Case Else             Temp = ""

End Select

If Len(Temp) > 0 Then         Temp = LCase(Temp)

Temp = UCase(Left(Temp, 1)) & Mid(Temp, 2)

If Abs(OrigNum) <> 1 Then Temp = Temp & "s"

End If

MySciPre = Temp End Function

_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 (12874) si applica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 ed Excel in Office 365. Puoi trovare una versione di questo suggerimento per l’interfaccia del menu precedente di Excel qui: