Calcoli ingegneristici (Microsoft Excel)
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:
-
Seleziona le celle che desideri formattare.
-
Scegli l’opzione Celle dal menu Formato. Excel visualizza la finestra di dialogo Formato celle.
-
Assicurati che la scheda Numero sia selezionata.
-
Nell’elenco delle categorie di formato, scegli Personalizzato. (Vedi figura 1.)
-
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.)
-
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 di avere il tuo numero originale nella cella A2, volevi il numero normalizzato nella cella B2 e il prefisso metico 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 (2928) si applica a Microsoft Excel 97, 2000, 2002 e 2003. Puoi trovare una versione di questo suggerimento per l’interfaccia a nastro di Excel (Excel 2007 e versioni successive) qui: