Millisekunden in Excel anzeigen

122

Ich versuche, Millisekunden in einem Excel-Makro anzuzeigen. Ich habe eine Spalte mit Ganzzahlen, die Zeitstempel in Millisekunden sind (z. B. 28095200 ist 7: 48: 15.200 Uhr), und ich möchte eine neue Spalte daneben erstellen, die einen laufenden Durchschnitt beibehält und die Zeit in einem hh:mm:ss.000Format anzeigt .

 Dim Cel As Range
 Set Cel = Range("B1")
 temp = Application.Average(Range("A1:A2")) / 1000
 ms = Round(temp - Int(temp), 2) * 1000
 Cel.Value = Strings.Format((temp / 60 / 60 / 24), "hh:mm:ss") _
                & "." & Strings.Format(ms, "#000")

Dies zeigt nur "mm: ss.0" in der Zelle an. Wenn ich jedoch auf die Zelle klicke, wird in der Formelleiste "hh: mm: ss" angezeigt. Warum fehlen die Stunden? Wie kann ich die Stunden, Minuten, Sekunden und Millisekunden anzeigen?

Evelyn
quelle

Antworten:

217

Klicken Sie mit der rechten Maustaste auf Zelle B1und wählen Sie Zellen formatieren . In Gewohnheit , legen Sie die folgenden in das Textfeld Typ :

[h]:mm:ss.000 

Um dies im Code festzulegen, können Sie Folgendes tun:

Range("A1").NumberFormat = "[h]:mm:ss.000"

Das sollte dir geben, wonach du suchst.

HINWEIS: Speziell formatierte Felder erfordern häufig, dass die Spaltenbreite für den gesamten Inhalt des formatierten Textes breit genug ist. Andernfalls wird der Text als angezeigt ######.

Ben McCormack
quelle
Yay! Aber gibt es eine Möglichkeit, das im Code zu tun? Jedes Mal, wenn ich das Makro starte, wird die Formatierung zurückgesetzt. (weil ich das Blatt im Makro lösche und neu erstelle.) Cel.EntireRow.NumberFormat = "[h]: mm: ss.000" Aber das gab mir nur "######" in der Zelle.
Evelyn
@ Evelyn - 3 Dinge: 1) Ich habe den Code hinzugefügt, den Sie zum Einstellen des Zahlenformats benötigen. 2) Stellen Sie sicher, dass Ihre Spalte breit genug ist, um in den gesamten formatierten Text zu passen. Siehe meine Anmerkung oben. 3) Siehe Gilberts Antwort und beachten Sie die Verwendung 3in der RoundFunktion. Dies stellt sicher, dass Sie 3 Dezimalstellen statt nur 2 erhalten.
Ben McCormack
Ah! Du hast recht. Ich musste nur die Spalte erweitern. Außerdem wollte ich in diesem Fall nur eine Genauigkeit von 2. Ich wollte nur, dass es für 3 formatiert wird. Vielen Dank für die Hilfe!
Evelyn
25
Ich habe gerade Folgendes entdeckt und wollte es teilen, falls andere das gleiche Problem haben: Wenn Ihr Windows / Excel für Deutschland konfiguriert .ist, muss das ersetzt werden ,, genau wie für die Dezimalstellen in Zahlen. Andernfalls beschwert sich Excel, dass es sich nicht um ein gültiges Format handelt. Also muss es sein[h]:mm:ss,000
gehho
6

Ich habe in Excel 2007 festgestellt, dass die ss.000 nicht funktioniert, wenn die Ergebnisse eine Tabelle aus einer eingebetteten Abfrage sind. Ich kann die Abfrageergebnisse (aus SQL Server Management Studio) einfügen und die Zeit einwandfrei formatieren. Wenn ich die Abfrage jedoch als Datenverbindung in Excel einbette, gibt das Format immer .000 als Millisekunden an.

Eric
quelle
4

Ich habe das in Excel 2000 gemacht.

Diese Aussage sollte sein: ms = Round(temp - Int(temp), 3) * 1000

Sie müssen ein benutzerdefiniertes Format für die Ergebniszelle von erstellen [h]:mm:ss.000

Gilbert Le Blanc
quelle
-3

Stellen Sie zuerst die Epoche der Millisekundenzeit als Datum dar (normalerweise 01.01.1970), und addieren Sie dann Ihre Millisekundenzeit geteilt durch die Anzahl der Millisekunden pro Tag (86400000):

=DATE(1970,1,1)+(A1/86400000)

Wenn Ihre Zelle richtig formatiert ist, sollten Sie ein für Menschen lesbares Datum und eine lesbare Uhrzeit sehen.

George
quelle
Hallo George und herzlich willkommen! Leider schien das OP speziell nach einem Weg zu fragen, um zu erreichen, dass die Zelle "richtig formatiert" ist. Ihr ursprünglicher Ansatz deckt bereits den Teil ab, den Sie ansprechen: die Konvertierung des Millisekunden-Zeitstempels in einen formatierbaren Datums- / Uhrzeitwert. Mit sechs Jahren ist das eine ziemlich alte Frage, in die Sie Ihre Zeit investieren. Ihre Eingabe wäre bei neueren Fragen mehr dankbar!
Carsten