Forum: PC Hard- und Software Excel Zellformatierung für Widerstände Kilo, Meg usw


von Björn G. (tueftler)


Lesenswert?

Hi für Widerstände zu sortieren habe ich mir die jeweiligen Zellen 
formatiert.
Leider bekomme ich es nicht hin z.b. bei 1800 1k8 angezeigt zu bekommen 
- 1k800 ist dagegen kein Problem.
Wie kann ich denn Excel erzählen das es die nullen da nicht einblenden 
braucht?

Auch bei 2M2 steht da nun 2M200000 :)

Derzeit sieht die Formatierung so aus:
[<1000]0;[<1000000]#"k"###;#"M"######

Björn

von Guido C. (guidoanalog)


Lesenswert?

Hallo Björn,

die folgenden Aussagen beziehen sich auf EXCEL 2003.

Ich befürchte, dass die von Dir gewünschte Formatierung über ein 
benutzerdefiniertes Zahlenformat nicht hinzubekommen ist. Du kannst zwar 
durch Einfügen des "1000er Trennzeichens" die Ausgabe von Zahlen in 
Tausendern erzwingen, wenn Du dabei jedoch nicht das Dezimaltrennzeichen 
verwendest wird aus "3500" der Zahlenwert "4". EXCEL rundet in diesem 
Fall. So bald Du das Dezimaltrennzeichen in Deinem benutzerdefinierte 
Zahlenformat verwendest ist das Dezimaltrennzeichen jedoch auch in der 
Ausgabe.

Was Du hinbekommen kannst ist z. B. "3.k5". Besonders schön ist dies 
jedoch auch nicht. Hier das entsprechende benutzerdefinierte 
Zahlenformat:
1
[<1000]0;[<1000000]#."k"#,;#."M"#,,

Noch zur Info. Bei mir ist EXCEL wie folgt eingestellt.
Dezimaltrennzeichen => "."
1000er Trennzeichen => ","

Was auf jeden Fall geht ist, die Ausgabe über Hilfsspalten bzw. Zeilen 
zusammenzubauen.

Mit freundlichen Grüßen
Guido

von hp-freund (Gast)


Lesenswert?

Guido C. schrieb:
> Ich befürchte, dass die von Dir gewünschte Formatierung über ein
> benutzerdefiniertes Zahlenformat nicht hinzubekommen ist.

Fürchte ich auch. Aber etwas ähnliches hatten wir hier schon mal:
Beitrag "[Excel] Milisekunden / benutzerdefinierte Formatierung"

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

Hab zwar Libreoffice, sollte aber auch in Excel funktionieren.
Musst nur prüfen ob das Punkt/Komma Problem besteht.

von Ich (Gast)


Lesenswert?

Eine schmale Zelle nebendran als Eingabefeld nutzen und dann mit Formeln 
und Funktionen die Eingabe richtig formatiert in das Anzeigefeld 
übertragen?

von Guido C. (guidoanalog)


Lesenswert?

Hallo,

hp-freund schrieb:
> Hab zwar Libreoffice, sollte aber auch in Excel funktionieren.

wenn man die folgende Zeile

hp-freund schrieb:
> mid(Temp1,Instr(Temp1,","),1,Temp)

durch die Zeile
1
Mid(Temp1, InStr(Temp1, ","), 1) = Temp

ersetzt, funktioniert die Funktion auch unter EXCEL 2003.

Mit freundlichen Grüßen
Guido

von hp-freund (Gast)


Lesenswert?

Sehr schön ;-)

von Björn G. (tueftler)


Angehängte Dateien:

Lesenswert?

Hi!

Danke für die vielen Tipps :)

Dachte eigentlich das das Excel schon irgendwie könnte, naja.

Habe die Funktion noch etwas umgebaut da es noch nicht ganz klappte.
17,9993 ergab 18, statt 17,99
12 ergab 12, statt 12
12000000 ergab 12M0 statt 12M

1
Function ToSciNum1(BaseNum As Double) As String
2
3
    Dim OrigNum As Double
4
    Dim Pref As Integer
5
    Dim Temp As String
6
    Dim Temp1 As String
7
8
    Pref = 0
9
    OrigNum = BaseNum
10
    
11
    Select Case BaseNum
12
        Case Is >= 1
13
            While Abs(BaseNum) >= 1000
14
                BaseNum = BaseNum / 1000
15
                Pref = Pref + 1
16
            Wend
17
        Case 0
18
            Pref = 99
19
        Case Else
20
            While Abs(BaseNum) < 1
21
                BaseNum = BaseNum * 1000
22
                Pref = Pref - 1
23
            Wend
24
    End Select
25
26
    Select Case Pref
27
        Case -6
28
            Temp = "a"
29
        Case -5
30
            Temp = "f"
31
        Case -4
32
            Temp = "p"
33
        Case -3
34
            Temp = "n"
35
        Case -2
36
            Temp = "µ"
37
        Case -1
38
            Temp = "m"
39
        Case 0
40
            Temp = ","
41
        Case 1
42
            Temp = "k"
43
        Case 2
44
            Temp = "M"
45
        Case 3
46
            Temp = "G"
47
        Case 4
48
            Temp = "T"
49
        Case 5
50
            Temp = "P"
51
        Case 6
52
            Temp = "E"
53
        Case Else
54
            Temp = " "
55
    End Select
56
57
  If ((OrigNum - Fix(OrigNum) = 0) And (OrigNum < 1000)) Then               'ohne Nachkommastellen und <1000
58
    Temp1 = Format(BaseNum, "0.#####")
59
    Temp1 = OrigNum
60
  Else
61
    Temp1 = Format(BaseNum, "0.0#")
62
    Mid(Temp1, InStr(Temp1, ","), 1) = Temp
63
  End If
64
  
65
  ToSciNum1 = Temp1
66
67
End Function

Anbei noch die Tabelle als .pdf .
Evtl. ist das ja dem ein oder anderen eine Hilfe wenn man mal wieder 
schnell einen exotischen Wert braucht :)
Widerstände der Reihe E12 als Parallelschaltung.

Björn

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.