Technische berekeningen

In een technische omgeving is het niet ongebruikelijk om hoeft te "normaliseren" nummers op een bepaalde manier. Zo moet u numerieke waarden genormaliseerd veelvouden van 10 ^ 3, zodat 7340 wordt uitgedrukt als 7,34 en 73400 wordt uitgedrukt 73.4 tonen.

Het is mogelijk in Excel om een ​​aangepaste getalnotatie gebruiken om informatie in wetenschappelijke notatie, dat de weergave van een aantal zal normaliseren tot een veelvoud van 10 ^ 3 te drukken. Om dit te doen, zou je als volgt te werk:

  1. Selecteer de cellen die u wilt formatteren.
  2. Kies de Cellen optie in het menu Opmaak. Excel toont het dialoogvenster Cellen opmaken.
  3. Zorg ervoor dat het tabblad Getal is geselecteerd.
  4. In de lijst van categorieën formaat, kies Aangepast. (Zie figuur 1.)

    Technische berekeningen

    Figuur 1. Het tabblad Getal van het dialoogvenster Cellen opmaken.

  5. In het vak Type voer ## 0,0E + 0 als uw formaat. (Dit geeft slechts een nummer aan de rechterkant van de decimaal. Als u meer wilt, verhoging van het aantal nullen achter de komma.)
  6. Klik op OK.

Nu, als je een nummer zoals 7340 in te voeren in de cel, Excel toont het als 7.3E + 3. Door de manier waarop de cel formaat werd ingevoerd, wordt het gedeelte na de E altijd een veelvoud van 3 zijn.

Dit is prima en goed, maar wat als je wil gewoon de 7.3 in de cel, en dan een metrische systeem met een eenheid in een aangrenzende cel, zoals kilogram? Dit is iets ingewikkelder, maar kan met formules. Bijvoorbeeld, laten we aannemen dat u uw oorspronkelijke nummer in cel A2, u de genormaliseerde getal in cel B2, en de metic voorvoegsel en unit naam in cel C2 wilde. Alles wat je zou moeten doen is het invoeren van de volgende formule in cel B2:

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

Ervan uitgaande dat de units waar u mee werkt zijn een denkbeeldige eenheid genaamd een foo, in cel C2 u een andere formule zou gebruiken, als volgt:

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

Deze formules lijken een beetje lang, en ze zijn. Echter, zullen ze werken voor een getal tussen ongeveer -9.99999E-18 tot 9.99999E + 20. Bijvoorbeeld, als je het getal 0,000125 in cel A2, dan cel B2 zal bevatten 125 en cel C2 zou Millifoos bevatten.

Als u liever langer formules zoals deze niet te gebruiken in uw werkmappen, kunt u een paar VBA-functies om de truc te doen ontwikkelen. De volgende functie, MySciNum, retourneert een genormaliseerd getal. Zo zou u = MySciNum (A2) gebruikt in cel B2 dezelfde resultaten als hierboven vermeld:

Functie MySciNum (BaseNum As Double) As Double
Selecteer Case BaseNum
Case Is> = 1
Terwijl Abs (BaseNum)> 1000
BaseNum = BaseNum / 1000
Zich begeven
Case 0
'Niets doen
Case Else
Terwijl Abs (BaseNum) <1
BaseNum = BaseNum * 1000
Zich begeven
Einde Select
MySciNum = BaseNum
End Function

Deze functie geeft alleen een nummer. Om de eenheden terug te keren met de juiste metrische systeem, zou je de volgende functie gebruiken. Het enige wat u hoeft te doen is het doorgeven van de referentie-cel en de naam van een enkele eenheid. Bijvoorbeeld, kon u = MySciPre (A2, "foo") te gebruiken. De macro is als volgt:

Functie 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
Selecteer Case BaseNum
Case Is> = 1
Terwijl Abs (BaseNum)> 1000
BaseNum = BaseNum / 1000
Pref = Pref + 1
Zich begeven
Case 0
Pref = 99
Case Else
Terwijl Abs (BaseNum) <1
BaseNum = BaseNum * 1000
Pref = Pref - 1
Zich begeven
Einde Select

Selecteer 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 = ""
Einde Select

Als Len (Temp)> 0 Then
Temp = LCase (Temp)
Temp = UCase (Links (Temp, 1)) & Mid (Temp, 2)
Als Abs (OrigNum) <> 1 Dan Temp = Temp & "s"
End If

MySciPre = Temp
End Function

ExcelTips is uw bron voor kosteneffectieve Microsoft Excel training. Deze tip (2928) is van toepassing op Microsoft Excel 97, 2000, 2002 en 2003. U kunt een versie van deze tip voor de ribbon-interface van Excel (Excel 2007 en later) vindt u hier: technische berekeningen.