如何将日期时间转换为时间?

时间:2017-06-28 19:28:34

标签: excel

我有一列日期时间。我必须删除日期部分。我很简单想运行一个可以做到这一点的宏。当我记录宏时,执行删除然后停止,然后在下一行运行它,它给出下面的值。如何全局化,以便我可以在所有行上运行此任务?

 2017-06-26 14:41:00

宏是这样的:

Sub Macro9()
'
' Macro9 Macro
'

'
    ActiveCell.FormulaR1C1 = "2:41:00 PM"
    ActiveCell.Offset(1, 0).Range("A1").Select
End Sub

1 个答案:

答案 0 :(得分:1)

这是一个简单的宏来完成你想要做的事情。我以为你想从军事时间转换到上午/下午。您必须调整单元格的位置以适合您的电子表格。这只是通过A列中的所有值并将它们转换为AM / PM时间并在coulmn B中将它们吐出。而不是循环遍历所有行,您还可以使用相同的逻辑定义自己的单个输入函数

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

以下是如何创建处理此问题的自定义函数:

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

根据应用程序的不同,可能会比另一个更好。