Forum: PC Hard- und Software [Excel] Milisekunden / benutzerdefinierte Formatierung


von MtheK (Gast)


Lesenswert?

Hallo Leute,
ich möchte dass mir Excel z.B. die Zahl "3,9E-3" als "3,9 ms" anzeigt.

Für Megahertz habe ich es mit folgendem benutzerdefinierten Zahlenformat 
geschafft:

#.##0.. "MHz"

"150E+6" wird als "150 MHz" angezeigt.

Für den oben genannten Fall finde ich jedoch das richtige Format nicht 
:(


Danke für etwaige Tipps!

lg,
Martin K.

von hp-freund (Gast)


Lesenswert?

Ich denke dafür brauchst Du eine Funktion:

http://excel.tips.net/T002928_Engineering_Calculations.html

von MtheK (Gast)


Lesenswert?

Danke, werde mir das mal angesehen und die Lösung ggf hier posten!

von Arc N. (arc)


Lesenswert?

Wenn das Analyse-Addin installiert ist, geht z.B auch
=UMWANDELN(3,9E-03; "sec"; "msec")
http://office.microsoft.com/de-de/excel-help/umwandeln-funktion-HP010062311.aspx

von MtheK (Gast)


Lesenswert?

Mit Hilfe des Links von hp-freund habe ichs mit folgender Funktion 
geschafft:
1
Function ToSciNum(BaseNum As Double, Unit As String) As String
2
3
    Dim OrigNum As Double
4
    Dim Pref As Integer
5
    Dim Temp As String
6
7
    Pref = 0
8
    OrigNum = BaseNum
9
    
10
    Select Case BaseNum
11
        Case Is >= 1
12
            While Abs(BaseNum) > 1000
13
                BaseNum = BaseNum / 1000
14
                Pref = Pref + 1
15
            Wend
16
        Case 0
17
            Pref = 99
18
        Case Else
19
            While Abs(BaseNum) < 1
20
                BaseNum = BaseNum * 1000
21
                Pref = Pref - 1
22
            Wend
23
    End Select
24
25
    Select Case Pref
26
        Case -6
27
            Temp = "a" & Unit
28
        Case -5
29
            Temp = "f" & Unit
30
        Case -4
31
            Temp = "p" & Unit
32
        Case -3
33
            Temp = "n" & Unit
34
        Case -2
35
            Temp = "µ" & Unit
36
        Case -1
37
            Temp = "m" & Unit
38
        Case 0
39
            Temp = Unit
40
        Case 1
41
            Temp = "k" & Unit
42
        Case 2
43
            Temp = "M" & Unit
44
        Case 3
45
            Temp = "G" & Unit
46
        Case 4
47
            Temp = "T" & Unit
48
        Case 5
49
            Temp = "P" & Unit
50
        Case 6
51
            Temp = "E" & Unit
52
        Case Else
53
            Temp = ""
54
    End Select
55
56
    ToSciNum = Format(BaseNum, "0.0") & " " & Temp
57
58
End Function

Zwei unbedeutend kleine Probleme habe ich dabei noch:
1) Damit ich die Funktion aufrufen kann, muss ich den ganzen 
Dateinamen/Modul-Wulst angeben: 
=PNM_FFT_Timing.xlsm!ToSciNum.ToSciNum(...)

2) Da die Funktion einen String zurückgibt (Wert + Einheit) kann ich 
natürlich damit nicht mehr weiterrechnen. Gäbs dafür auch noch eine 
Lösung (Ohne die Einheit in einer anderen Zelle anzeigen zu lassen!)?


@Arc Net: Beider deiner Funktion muss ich a) die Größenordung fix 
angeben, und b) wird die Einheit nicht angezeigt. Danke für den Tip, ist 
aber nicht  das was ich suche.

von hp-freund (Gast)


Angehängte Dateien:

Lesenswert?

Hallo MtheK,

ich habe deine Funktion in LibreOffice getestet. Funktioniert.
Hier ist es so das ich die Funktion/das Makro direkt in das Dokument 
einfüge.
Unter Makros:
Dokument -> Standard -> Module1 -> ToSciNum
Dann erfolgt der Aufruf wie im Bild.
Excel/Window$ ist aber schon zu lange her. Weiss ich nicht mehr wie das 
da war.

Zu 2) :
Du hast doch noch die originale Zahl ;)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.