我收到了代表军事时间的自定义格式(类型:000000)的数字列表。它始终包含 6 位数字,必要时使用前导零。例如:
- 123456 变为 12:34:56(下午)
- 000321 变为 00:03:21(上午)
- 142321 变为 14:23:21(下午)
如何将 A 列中的整数转换为 B 列中的格式 (hh:mm:ss)?我想使用军用 24 小时制时钟。
假设它是一个实整数,而不是文本:
=TIME(INT(A1/10000),INT(MOD(A1,10000)/100),MOD(A1,100))
如果是文本,则使用
=TIME(VALUE(LEFT(A1,2)),VALUE(MID(A1,3,2)),VALUE(RIGHT(A1,2)))
根据需要格式化结果。
作为 VBA 函数: 整数:
Function RetTime(IntTime As Long) As Date
RetTime = TimeSerial(Int(IntTime / 10000), Int((IntTime Mod 10000) / 100), (IntTime Mod 100))
End Function
细绳:
Function RetTimeS(StrTime As String) As Date
RetTimeS = TimeSerial(Val(Left(StrTime, 2)), Val(Mid(StrTime, 3, 2)), Val(Right(StrTime, 2)))
End Function
试试 TEXT 功能,即在 B1
=TEXT(A1,"00\:00\:00")+0
格式为 hh:mm:ss
我不知道你是否想要 VBA 代码,或者单元格的公式,或者是什么Custom, type 00000
。从正确使用 VBA 功能的角度来看,肖恩的上述回答可能是最好的,但我不相信有任何方法可以在军事时间格式化时间对象,并将“(am)”和“(pm)”附加到最后. 至少不使用标准的 Excel 格式。(可能是因为 am 和 pm 在军事时间是多余的。)
因此,假设您的源数据确实是字符串,这里有一个替代方案,以防您出于某种原因真的想要 'am' 和 'pm':
=MID(A1,1,2) & ":" & MID(A1,3,2) & ":" & MID(A1,5,2) & IF(VALUE(MID(A1,1,2)) < 12," (am)", " (pm)")