如何在Excel中添加前导零(ms的时间戳没有前导零)

时间:2014-02-21 13:57:33

标签: excel timestamp

我的某些文件仍然存在严重问题。这是一个相当愚蠢的问题,但我已经工作了很长一段时间,无法找到解决方案。 我需要时间戳中的前导零,至少在ms级别上。 我的软件制作的时间戳总是如下所示:(示例)

9:55:1:19(即9小时,55分钟,1秒,19毫秒)

虽然我需要的东西看起来像

09:55:01:019

在Excel中进行转换没有问题。我用

=VALUE(SUBSTITUTE(G2;":";",";3))

但我总是得到

09:55:01:190(190ms !!)

因此,毫秒总是像逗号值一样读取,从软件的角度来看,这是可以理解的。

我想要一个解决方案,可以将正确的值附加到新列中每行的末尾,也可以直接将原始列(D)中的值更改为正确的值。 (附加是可以的,因为我的其他脚本已经以这种方式工作了!)

你能快点帮忙吗?

https://www.dropbox.com/sh/3ch6ikddplnyjgg/vUfnVgbbzH这是一个示例文件

3 个答案:

答案 0 :(得分:0)

使用 A1 中的值,如:

0.413206238

公式:

=SUBSTITUTE(TEXT(A1,"hh:mm:ss.000"),".",":")

将显示:

09:55:01:019

修改#1:

或者,如果您想要将 D 列中的值转换为原位。选择单元格并运行这个小宏:

Sub FFormat()
    Dim r As Range, L As Long, U As Long
    For Each r In Selection
        ary = Split(r.Text, ":")
        U = UBound(ary)
        L = LBound(ary)
        For i = L To U
            If Len(ary(i)) = 1 Then
                ary(i) = "0" & ary(i)
            End If
        Next i
        If Len(ary(U)) = 2 Then
            ary(U) = "0" & ary(U)
        End If
        r.Value = Join(ary, ":")
    Next r
End Sub

答案 1 :(得分:0)

如果R12(我的例子)中的原文是文本,你可以输入这个大公式::)

=TEXT(LEFT(SUBSTITUTE(R12;":";REPT(" ";20));4);"00") & ":"&TEXT(MID(SUBSTITUTE(R12;":";REPT(" ";20));14;20);"00") & ":" & TEXT(MID(SUBSTITUTE(R12;":";REPT(" ";20));34;20);"00") & ":" & TEXT(MID(SUBSTITUTE(R12;":";REPT(" ";20));54;20);"000")

根据您的区域设置,您可能需要将字段分隔符“;”替换为“,”

答案 2 :(得分:0)

G列中的数据有一个前导空格 - 无论您是否有前导空格,新列中的此公式都应转换为有效时间值

=LEFT(TRIM(G2);FIND("^";SUBSTITUTE(TRIM(G2);":";"^";3))-1)+LOOKUP(1000;RIGHT(G2;{1;2;3})+0)/86400000

格式为[h]:mm:ss.000

这将处理单位或双位数毫秒,假设如果没有毫秒,您仍然会有第三位:后面跟零。还可以处理单位数小时,分钟或秒钟