如何在VBA中将给定的数字转换为时间格式HH:MM:SS?
我收到了代表军事时间的自定义格式(types:000000)的数字列表。 它总是包含6位数字,必要时使用前导零。 例如:
- 123456变成12:34:56(pm)
- 000321变成00:03:21(上午)
- 142321变成14:23:21(pm)
如何将列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)))
格式化结果,但是你想要的。
作为VBAfunction:整数:
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函数的angular度来看最好的,但是我不相信有什么办法在军事时间格式化一个时间对象,而“(am)”和“(pm)”结束。 至less不使用标准的Excel格式。 (可能是因为上午和下午在军事时间是多余的。)
所以假设你的源数据真的是string,这里有一个select,如果你真的想'am'和'pm'出于某种原因:
=MID(A1,1,2) & ":" & MID(A1,3,2) & ":" & MID(A1,5,2) & IF(VALUE(MID(A1,1,2)) < 12," (am)", " (pm)")