我收到了自定义格式(类型:000000)中代表军事时间的数字列表。它总是包含6位数字,必要时使用前导零。例如:
如何将A列中的整数转换为B列中的格式(hh:mm:ss)?我想用军用,24小时制。
答案 0 :(得分:7)
假设它是一个实数,而不是文本:
=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
答案 1 :(得分:6)
尝试TEXT功能,即在B1
中 =TEXT(A1,"00\:00\:00")+0
并格式为hh:mm:ss
答案 2 :(得分:3)
我无法判断您是想要VBA代码,还是需要单元格的公式,或Custom, type 00000
是什么。从正确使用VBA功能的角度来看,Sean上面的答案可能是最好的,但是我不相信有任何方法可以在军事时间格式化时间对象,并将“(am)”和“(pm)”添加到最后。至少不使用标准的Excel格式。 (可能是因为上午和下午在军事时间是多余的。)
所以假设你的源数据真的是字符串,这里有一个替代方案,以防你出于某种原因真的想要'am'和'pm':
=MID(A1,1,2) & ":" & MID(A1,3,2) & ":" & MID(A1,5,2) & IF(VALUE(MID(A1,1,2)) < 12," (am)", " (pm)")