Excel 在VBA中更改日期格式
我有一个日期栏,如下所示: 04-03-2013 01:57:32美国东部时间下午 我正在尝试将其更改为如下所示: 2013年3月4日13:57:32 我的代码:Excel 在VBA中更改日期格式,excel,vba,Excel,Vba,我有一个日期栏,如下所示: 04-03-2013 01:57:32美国东部时间下午 我正在尝试将其更改为如下所示: 2013年3月4日13:57:32 我的代码: Columns("D:E").Select Selection.Replace What:=" IST", Replacement:="", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ Replac
Columns("D:E").Select
Selection.Replace What:=" IST", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:=" IDT", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:="-", Replacement:="/", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
问题是它将其更改为这样:
04-03-2013 01:57:32下午
只有当我在“PM”后手动按ENTER键时,它才会变为:
2013年3月4日13:57:32
如何自动执行此操作?我认为您只需要指定所需的数字格式:
Selection.NumberFormat = "dd/mm/yyyy hh:mm:ss"
' or mm/dd/yyyy, not sure which you want!
如果要将原始日期转换为如上格式的“真实”Excel日期,请在常规模块中尝试:
Option Explicit
Sub ChangeDateTimeFormat()
Dim Rng As Range
Dim C As Range
Set Rng = Range("D:E").SpecialCells(xlCellTypeConstants)
For Each C In Rng
With C
If Right(.Text, 4) = " IDT" Or Right(.Text, 4) = " IST" Then
.Value = DateValue(Left(.Text, Len(.Text) - 4)) + TimeValue(Left(.Text, Len(.Text) - 4))
.NumberFormat = "mm/dd/yyyy hh:mm:ss"
End If
End With
Next C
End Sub
这仅使用MDY格式的日期进行测试。如果您的日期是DMY格式,而这不起作用,我将进一步测试