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
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
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.
Eine schmale Zelle nebendran als Eingabefeld nutzen und dann mit Formeln und Funktionen die Eingabe richtig formatiert in das Anzeigefeld übertragen?
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.