軍事時間を表すカスタム形式 (タイプ: 000000) の数字のリストを受け取りました。常に 6 桁で、必要に応じて先行ゼロが使用されます。例えば:
- 123456 は 12:34:56 (午後) になります
- 000321 は 00:03:21 (am) になります
- 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
B1などでTEXT関数を試す
=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)")