Afficher les millisecondes dans Excel

123

J'essaye d'afficher les millisecondes dans une macro Excel. J'ai une colonne d'entiers qui sont des horodatages en millisecondes (par exemple, 28095200 est 7: 48: 15.200 am), et je veux créer une nouvelle colonne à côté qui garde une moyenne courante et affiche l'heure dans un hh:mm:ss.000format.

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

Cela n'affiche que "mm: ss.0" dans la cellule. Pourtant, lorsque je clique sur la cellule, il affiche "hh: mm: ss" dans la barre de formule. Pourquoi les heures manquent-elles? Comment puis-je afficher les heures, les minutes, les secondes et les millisecondes?

Evelyn
la source

Réponses:

217

Cliquez avec le bouton droit sur Cell B1et choisissez Formater les cellules . Dans Personnalisé , placez ce qui suit dans la zone de texte intitulée Type :

[h]:mm:ss.000 

Pour définir cela dans le code, vous pouvez faire quelque chose comme:

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

Cela devrait vous donner ce que vous recherchez.

REMARQUE: les champs spécialement mis en forme nécessitent souvent que la largeur de la colonne soit suffisamment large pour tout le contenu du texte formaté. Sinon, le texte s'affichera sous la forme ######.

Ben McCormack
la source
Yay! Mais y a-t-il un moyen de le faire dans le code? Maintenant, chaque fois que j'exécute la macro, le formatage est réinitialisé. (parce que je supprime et recrée la feuille dans la macro.) Cel.EntireRow.NumberFormat = "[h]: mm: ss.000" Mais cela m'a juste donné "######" dans la cellule.
Evelyn
@Evelyn - 3 choses: 1) J'ai ajouté le code dont vous avez besoin pour définir le format des nombres. 2) Assurez-vous que votre colonne est suffisamment large pour contenir tout le texte formaté. Voir ma note ci-dessus. 3) Voir la réponse de Gilbert et noter l'utilisation de 3dans la Roundfonction. Cela garantit que vous obtenez 3 décimales au lieu de seulement 2.
Ben McCormack
Ah! Vous avez raison. J'avais juste besoin d'élargir la colonne. De plus, je ne voulais qu'une précision de 2 dans ce cas. Je voulais juste qu'il soit formaté pour 3. Merci beaucoup pour l'aide!
Evelyn
25
Je viens de découvrir ce qui suit et je voulais le partager au cas où d'autres rencontreraient également le même problème: si votre Windows / Excel est configuré pour l'Allemagne, le .doit être remplacé par ,, tout comme pour les décimales dans les nombres. Sinon, Excel se plaindra qu'il ne s'agit pas d'un format valide. Donc, ça doit être[h]:mm:ss,000
gehho
6

J'ai découvert dans Excel 2007, si les résultats sont un tableau d'une requête intégrée, le ss.000 ne fonctionne pas. Je peux coller les résultats de la requête (à partir de SQL Server Management Studio) et formater l'heure très bien. Mais lorsque j'intègre la requête en tant que connexion de données dans Excel, le format donne toujours .000 en millisecondes.

Eric
la source
4

Je l'ai fait dans Excel 2000.

Cette déclaration doit être: ms = Round(temp - Int(temp), 3) * 1000

Vous devez créer un format personnalisé pour la cellule de résultat de [h]:mm:ss.000

Gilbert Le Blanc
la source
-3

Représentez d'abord l'époque de la milliseconde sous forme de date (généralement 1/1/1970), puis ajoutez votre milliseconde divisée par le nombre de millisecondes dans un jour (86400000):

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

Si votre cellule est correctement formatée, vous devriez voir une date / heure lisible par l'homme.

George
la source
Salut George et bienvenue! Malheureusement, l'OP a semblé demander spécifiquement un moyen de faire en sorte que la cellule soit "correctement formatée". Leur approche originale couvre déjà la partie que vous abordez: la conversion de l'horodatage milliseconde en une valeur datetime formatable. De plus, avec six ans, c'est une question plutôt ancienne sur laquelle vous investissez votre temps. Votre contribution serait plus appréciée sur les nouvelles questions!
Carsten