如何在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)")