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:

  1. Wählen Sie die Zellen aus, die Sie formatieren möchten.

  2. Wählen Sie im Menü Format die Option Zellen. Excel zeigt das Dialogfeld Zellen formatieren an.

  3. Stellen Sie sicher, dass die Registerkarte Nummer ausgewählt ist.

  4. Wählen Sie in der Liste der Formatkategorien die Option Benutzerdefiniert. (Siehe Abbildung 1.)

  5. 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.)

  6. 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: