Visualizza i millisecondi in Excel


122

Sto cercando di visualizzare i millisecondi in una macro di Excel. Ho una colonna di numeri interi che sono timestamp in millisecondi (ad esempio 28095200 è 7: 48: 15.200 am), e voglio creare una nuova colonna accanto ad essa che mantenga una media corrente e visualizzi l'ora in un hh:mm:ss.000formato.

 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")

Questo visualizza solo "mm: ss.0" nella cella. Tuttavia, quando faccio clic sulla cella, viene visualizzato "hh: mm: ss" nella barra della formula. Perché mancano le ore? Come posso visualizzare ore, minuti, secondi e millisecondi?

Risposte:


217

Fare clic con il pulsante destro del mouse su Cella B1e scegliere Formato celle . In Personalizzato , inserisci quanto segue nella casella di testo denominata Tipo :

[h]:mm:ss.000 

Per impostarlo nel codice, puoi fare qualcosa come:

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

Questo dovrebbe darti quello che stai cercando.

NOTA: i campi con formattazione speciale richiedono spesso che la larghezza della colonna sia sufficientemente ampia per l'intero contenuto del testo formattato. In caso contrario, il testo verrà visualizzato come ######.


Sìì! Ma c'è un modo per farlo nel codice? Ora ogni volta che eseguo la macro, la formattazione viene ripristinata. (perché sto eliminando e ricreando il foglio nella macro.) Cel.EntireRow.NumberFormat = "[h]: mm: ss.000" Ma questo mi ha appena dato "######" nella cella.
Evelyn

@Evelyn - 3 cose: 1) Ho aggiunto il codice necessario per impostare il formato del numero. 2) Assicurati che la tua colonna sia abbastanza ampia da contenere l'intero testo formattato. Vedi la mia nota sopra. 3) Vedi la risposta di Gilbert e nota l'uso di 3nella Roundfunzione. Questo ti assicura di ottenere 3 cifre decimali invece di 2.
Ben McCormack

Ah! Hai ragione. Avevo solo bisogno di allargare la colonna. Inoltre, in questo caso volevo solo una precisione di 2. Volevo solo che fosse formattato per 3. Grazie mille per l'aiuto!
Evelyn

25
Ho appena scoperto quanto segue e volevo condividerlo nel caso in cui anche altri riscontrassero lo stesso problema: Se il tuo Windows / Excel è configurato per la Germania, .deve essere sostituito con ,, proprio come per le cifre decimali nei numeri. Altrimenti Excel si lamenterà che non è un formato valido. Quindi, deve essere[h]:mm:ss,000
gehho

6

Ho scoperto in Excel 2007, se i risultati sono una tabella da una query incorporata, ss.000 non funziona. Posso incollare i risultati della query (da SQL Server Management Studio) e formattare l'ora correttamente. Ma quando incorporo la query come connessione dati in Excel, il formato fornisce sempre .000 come millisecondi.


4

L'ho fatto in Excel 2000.

Questa affermazione dovrebbe essere: ms = Round(temp - Int(temp), 3) * 1000

È necessario creare un formato personalizzato per la cella dei risultati di [h]:mm:ss.000


-3

Per prima cosa rappresenta l'epoca del millisecondo come una data (di solito 1/1/1970), quindi aggiungi il tuo millisecondo diviso per il numero di millisecondi in un giorno (86400000):

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

Se la tua cella è formattata correttamente, dovresti vedere una data / ora leggibile dall'uomo.


Ciao Giorgio e benvenuto! Sfortunatamente, l'OP sembrava chiedere specificamente un modo per ottenere che la cella fosse "formattata correttamente". Il loro approccio originale copre già la parte che stai affrontando: la conversione del timestamp in millisecondi in un valore datetime formattabile. Inoltre, con sei anni, è una domanda piuttosto vecchia su cui investi il ​​tuo tempo. Il tuo contributo sarebbe più apprezzato sulle nuove domande!
Carsten
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.