如何将date时间转换为时间?

我有一个date时间的列。 我必须删除date部分。 我简单地想要运行一个macros来做到这一点。 当我录制macros,做删除,然后停止,然后运行它在下一行,它给出下面的值。 一个人如何全球化,所以我可以在这个任务的所有行上运行?

2017-06-26 14:41:00 

macros是这样的:

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

这是一个简单的macros来完成你正在寻找的东西。 我假设你想从军事时间转换成上午/下午。 您将不得不调整单元格的位置以适合您的电子表格。 这只是通过列A中的所有值,并将它们转换为上午/下午时间,并将它们以coulmn B的forms排出。而不是循环遍历所有行,还可以使用相同的逻辑定义您自己的单个input函数。

 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 

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