Technische Berechnungen (Microsoft Excel)
In einer technischen Umgebung ist es nicht ungewöhnlich, dass
„normalisiert“ werden muss Zahlen in irgendeiner Weise. Beispielsweise müssen Sie möglicherweise numerische Werte anzeigen, die auf ein Vielfaches von 10 ^ 3 normiert sind, sodass 7340 als 7,34 und 73400 als 73,4 ausgedrückt wird.
In Excel ist es möglich, ein benutzerdefiniertes Zahlenformat zu verwenden, um Informationen in wissenschaftlicher Notation auszudrücken, die die Anzeige einer Zahl auf ein Vielfaches von 10 ^ 3 normalisieren. Gehen Sie dazu folgendermaßen vor:
-
Wählen Sie die Zellen aus, die Sie formatieren möchten.
-
Wählen Sie im Menü Format die Option Zellen. Excel zeigt das Dialogfeld Zellen formatieren an.
-
Stellen Sie sicher, dass die Registerkarte Nummer ausgewählt ist.
-
Wählen Sie in der Liste der Formatkategorien die Option Benutzerdefiniert. (Siehe Abbildung 1.)
-
Geben Sie im Feld Typ als Format ## 0.0E + 0 ein. (Dies liefert nur eine Zahl rechts von der Dezimalstelle. Wenn Sie mehr möchten, erhöhen Sie die Anzahl der Nullen nach der Dezimalstelle.)
-
Klicken Sie auf OK.
Wenn Sie nun eine Zahl wie 7340 in die Zelle eingeben, zeigt Excel diese als 7.3E + 3 an. Aufgrund der Art und Weise, wie das Zellenformat eingegeben wurde, ist der Teil nach dem E immer ein Vielfaches von 3.
Das ist in Ordnung und gut, aber was ist, wenn Sie nur die 7.3 in der Zelle und dann ein metrisches Präfix mit einer Einheit in einer angrenzenden Zelle, wie z. B. Kilogramm, möchten? Dies ist etwas komplexer, kann aber mithilfe von Formeln durchgeführt werden. Angenommen, Sie haben Ihre ursprüngliche Nummer in Zelle A2, möchten die normalisierte Nummer in Zelle B2 und das metrische Präfix und den Einheitennamen in Zelle C2. Sie müssen lediglich die folgende Formel in Zelle B2 eingeben:
=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)))))
Angenommen, die Einheiten, mit denen Sie arbeiten, sind eine imaginäre Einheit namens foo. In Zelle C2 würden Sie eine andere Formel wie folgt verwenden:
=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")))
Diese Formeln mögen etwas lang erscheinen, und das sind sie auch. Sie funktionieren jedoch für eine beliebige Anzahl zwischen ungefähr -9.99999E-18 und 9.99999E + 20.
Wenn Sie beispielsweise die Nummer .000125 in Zelle A2 eingeben, enthält Zelle B2 125 und Zelle C2 Millifoos.
Wenn Sie in Ihren Arbeitsmappen keine längeren Formeln wie diese verwenden möchten, können Sie einige VBA-Funktionen entwickeln, um diesen Trick auszuführen.
Die folgende Funktion, MySciNum, gibt eine normalisierte Zahl zurück. Daher würden Sie = MySciNum (A2) in Zelle B2 verwenden, um die gleichen Ergebnisse wie oben angegeben zu erhalten:
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
Diese Funktion gibt nur eine Zahl zurück. Um die Einheiten mit dem entsprechenden Metrikpräfix zurückzugeben, verwenden Sie die folgende Funktion. Sie müssen lediglich die Zellreferenz und den Namen einer einzelnen Einheit übergeben.
Zum Beispiel könnten Sie = MySciPre (A2, „foo“) verwenden. Das Makro lautet wie folgt:
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
_Hinweis: _
Wenn Sie wissen möchten, wie die auf dieser Seite (oder auf einer anderen Seite der ExcelTips-Websites) beschriebenen Makros verwendet werden, habe ich eine spezielle Seite vorbereitet, die hilfreiche Informationen enthält.
ExcelTips ist Ihre Quelle für kostengünstige Microsoft Excel-Schulungen.
Dieser Tipp (2928) gilt für Microsoft Excel 97, 2000, 2002 und 2003. Eine Version dieses Tipps für die Multifunktionsleistenschnittstelle von Excel (Excel 2007 und höher) finden Sie hier: