在Excel中显示毫秒

我正试图在Excelmacros中显示毫秒。 我有一列整数,简单地说是以毫秒为单位的时间戳(例如28095200是7:48:15.200 am),我想在它旁边新build一个保持运行平均值的新列,并以“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”。 为什么在单元格中缺less小时?

此外,另一个奇怪的事情是,如果我把最后一行改为Strings.Format(ms, "#000.") ,那么我会得到“hh:mm:ss.000”。 这就是我想要的,而不是额外的时间。

右键单击单元格B1并select格式单元格 。 在“ 自定义”中 ,将下列内容放在标有“ types”

 [h]:mm:ss.000 

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

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

这应该给你你想要的。

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

我在Excel 2000中做了这个。

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

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

我发现在Excel 2007中,如果结果是来自embedded式查询的表,则ss.000不起作用。 我可以粘贴查询结果(从SQL Server Management Studio),并格式化时间就好了。 但是,当我将查询作为数据连接embedded到Excel中时,格式始终以.000为毫秒。

首先将毫秒时间的时代表示为date(通常为1/1/1970),然后将毫秒时间除以一天中的毫秒数(86400000):

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

如果您的单元格格式正确,则应该看到人类可读的date/时间。