1

我收到了代表军事时间的自定义格式(类型:000000)的数字列表。它始终包含 6 位数字,必要时使用前导零。例如:

  • 123456 变为 12:34:56(下午)
  • 000321 变为 00:03:21(上午)
  • 142321 变为 14:23:21(下午)

如何将 A 列中的整数转换为 B 列中的格式 (hh:mm:ss)?我想使用军用 24 小时制时钟。

4

3 回答 3

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
于 2012-06-18T17:48:19.000 回答
6

试试 TEXT 功能,即在 B1

=TEXT(A1,"00\:00\:00")+0

格式为 hh:mm:ss

于 2012-06-18T18:08:01.417 回答
3

我不知道你是否想要 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)")
于 2012-06-18T18:00:32.307 回答