我试图在Excel宏中显示毫秒。我有一列整数,它们仅仅是以毫秒为单位的时间戳(例如28095200是7:48:15.200 am),我想在它旁边创建一个新的列,以保持运行平均值,并以“hh:mm”显示时间:ss.000“格式。我尝试了多种不同的路线,但我不能在毫秒级的情况下得到毫秒而不会导致奇怪的事情发生。在Excel中显示毫秒
这就是我现在所拥有的:
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”。为什么细胞中缺少小时?
另外,发生的另一个奇怪的事情是,如果我将最后一行改为Strings.Format(ms, "#000.")
,那么我会得到“hh:mm:ss.000”。这就是我想要的,而不是多余的时间。
耶!但是有没有办法在代码中做到这一点?现在,每次运行宏时,格式化都会重置。 (因为我在宏中删除并重新创建工作表。)Cel.EntireRow.NumberFormat =“[h]:mm:ss.000”但是在单元格中给了我“######”。 – Evelyn 2010-06-22 17:48:56
@Evelyn - 3件事:1)我添加了您需要设置数字格式的代码。 2)确保你的列足够宽以适应整个格式化文本。看到我上面的注释。 3)参见吉尔伯特的回答,并注意在“回合”函数中使用'3'。这确保你得到3位小数而不是2。 – 2010-06-22 19:40:34
啊!你是对的。我只需要扩大专栏。另外,在这种情况下,我只想要2的精度。我只是希望它被格式化为3.非常感谢您的帮助! – Evelyn 2010-06-22 20:08:33