在Excel中显示毫秒


122

我试图在Excel宏中显示毫秒。我有一列整数,以毫秒为单位(例如28095200是7:48:15.200 am),我想在其旁边创建一个新列,该列保持运行平均值并以hh:mm:ss.000格式显示时间。

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

这仅在单元格中显示“ mm:ss.0”。但是,当我单击该单元格时,它在编辑栏中显示“ hh:mm:ss”。为什么缺少时间?如何显示小时,分钟,秒和毫秒?

Answers:


217

右键单击“单元格”,B1然后选择“设置单元格格式”。在“ 自定义”中,在“ 类型 ”文本框中输入以下内容:

[h]:mm:ss.000 

要在代码中进行设置,您可以执行以下操作:

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

那应该给你你想要的东西。

注意:特殊格式的字段通常要求列宽要足够宽才能容纳格式化文本的全部内容。否则,文本将显示为######


好极了!但是我有办法在代码中做到这一点吗?现在,每次我运行宏时,格式都会重置。(因为我要在宏中删除并重新创建工作表。)Cel.EntireRow.NumberFormat =“ [h]:mm:ss.000”但这只是在单元格中给了我“ ######”。
伊夫林

@Evelyn-3件事:1)我添加了设置数字格式所需的代码。2)确保您的列足够宽以适合整个格式化的文本。请参阅上面的注释。3)参见吉尔伯特的答案,并注意3Round函数中的使用。这可以确保得到小数点后3位,而不是仅仅2
本·麦科马克

啊! 你是对的。我只需要扩大专栏。另外,在这种情况下,我只希望精度为2。我只是希望将其格式化为3。非常感谢您的帮助!
伊夫琳

25
我只是发现以下内容,并希望与他人分享,以防其他人也遇到相同的问题:如果您的Windows / Excel是为德国配置的,则.必须将替换为,,就像数字中的小数位一样。否则,Excel将抱怨它不是有效格式。因此,必须是[h]:mm:ss,000
gehho

6

我在Excel 2007中发现,如果结果是来自嵌入式查询的表,则ss.000无法正常工作。我可以粘贴查询结果(来自SQL Server Management Studio),并格式化时间。但是,当我将查询作为Excel中的数据连接嵌入时,格式始终为.000,以毫秒为单位。


4

我是在Excel 2000中完成的。

该语句应为: ms = Round(temp - Int(temp), 3) * 1000

您需要为的结果单元格创建自定义格式 [h]:mm:ss.000


-3

首先将毫秒时间的纪元表示为日期(通常是1970年1月1日),然后将毫秒时间除以一天中的毫秒数(86400000):

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

如果您的单元格格式正确,则应该看到人类可以理解的日期/时间。


您好乔治,欢迎您!不幸的是,OP似乎特别要求一种方法来实现单元格的“正确格式化”。他们的原始方法已经涵盖了您要解决的部分:将毫秒时间戳转换为可格式化的日期时间值。此外,六年来,这是一个相当古老的问题,您需要花时间在上面。在新问题上,您的输入将受到更多的赞赏!
卡斯滕
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.