は、あなたがする探しているものを達成するための簡単なマクロです。私はあなたが軍事的な時間から午前/午後に変換したいと思っていました。スプレッドシートに合わせてセルの位置を調整する必要があります。これは、列Aのすべての値を丁度午前/午後の時間に変えて、列挙した列でそれらを吐き出すだけです。すべての行をループするのではなく、同じロジックで独自の単一入力関数を定義することもできます。 、1は、おそらく他のより良い動作します
Function tm(date_time)
If Left(Right(date_time, 8), 2) < 12 Then
tm = Right(date_time, 8) & " AM"
ElseIf Left(Right(date_time, 8), 2) = 12 Then tm = Right(date_time, 8) & " PM"
ElseIf Left(Right(date_time, 8), 2) > 12 Then tm = Left(Right(date_time, 8), 2)- 12 & Right(date_time, 6) & " PM"`
End If
End Function
アプリケーションに応じて:ここで
Sub test()
Dim dt As String
Dim tm As String
Dim hr As String
Dim row_ct As Integer
row_ct = Range("A1").End(xlDown).Row
For i = 1 To row_ct
dt = Cells(i, 1)
tm = Right(Cells(i, 1), 8)
hr = Left(tm, 2)
If hr < 12 Then
tm = tm & " AM"
ElseIf hr = 12 Then tm = tm & " PM"
ElseIf hr > 12 and hr - 12 < 10 then tm = 0 & (Left(tm, 2) - 12) & Right(tm, 6) & " PM"
Else: tm = left(tm, 2) - 12 & right(tm, 6) & " PM"
End If
Cells(i, 2) = tm
Next i
End Sub
は、あなたがこれを処理するカスタム関数を作ることができる方法です。
時間だけを表示するようにセルをフォーマットするのはなぜですか?カスタムフォーマット 'h:mm:ss AM/PM' – tigeravatar
私は時間だけ持ってきたときに機能しませんでした。(AMPMはやっていませんでした) –
いつも正しい機能を使うことができます。たとえば、= right(a1,8)です。これは、時間の後に空白がないと仮定し、時間は常に8文字を要します。これらの前提が満たされない場合でも、あなたが望むものを手に入れることができます。軍事的な時間からAM/PMに変換しますか?もしそうなら、別のアプローチをとる必要があります。 – Jarom