2014-01-14 184 views
1

我有一個日期列看起來像這樣:更改日期格式VBA

2013年4月3日下午1點57分32秒IST

我試圖去改變它看起來是這樣的:

2013年4月3日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 

的problome是,它改變它看起來像:

2013年4月3日下午1時57分32秒

,只有當我之後按手動輸入「PM」 它改變:

2013年4月3日13時57分32秒

我該如何自動做到這一點?

回答

2

我想你只需要指定所需的數字格式:

Selection.NumberFormat = "dd/mm/yyyy hh:mm:ss" 
' or mm/dd/yyyy, not sure which you want! 
0

如果你想在原來的日期轉換爲格式化爲上述「真實」的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格式,並且這不起作用,我會進一步測試。