我的某些文件仍然存在严重问题。这是一个相当愚蠢的问题,但我已经工作了很长一段时间,无法找到解决方案。 我需要时间戳中的前导零,至少在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这是一个示例文件
答案 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
这将处理单位或双位数毫秒,假设如果没有毫秒,您仍然会有第三位:后面跟零。还可以处理单位数小时,分钟或秒钟