更改日期格式VBA



我有一个日期列,如下所示:

04-03-2013 01:57:32 下午 IST

我正在尝试将其更改为如下所示:

2013-03-04 13:57:32

我的代码:

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

优点是它将其更改为如下所示:

2013-03-04 下午01:57:32

只有当我在"PM"之后手动按 ENTER 时,它才会变为:

2013-03-04 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格式,并且这不起作用,我将进一步测试。

最新更新