我有一个数字形式的日期,如下所示:20150529
有没有办法将其转换为29/05/2015
?
我需要为此编写一个宏。
我有这段代码,但它不起作用:
Dim Current_Date As Date
Dim Date_String As String
Range("K2").Select
Date_String = Range("K2").Value
Current_Date = CDate(Date_String)
Range("Q2").Select
Range("Q2").Value = Current_Date
答案 0 :(得分:2)
Range.TextToColumns method可以快速处理20150629的选择或整个列中的一个或多个单元格,例如日期。
sub YMD_2_Date
with selection
.TextToColumns Destination:=.cells(1), DataType:=xlFixedWidth, _
FieldInfo:=Array(0, 5)
end with
end sub
xlYMDFormat 的xlColumnDataType property(例如 5 )会强制Excel将该数字视为年 - 月 - 日。< / p>
这可以通过循环选择从一个选择(单个列中的一个或多个单元格)扩展到多个列。
答案 1 :(得分:1)
您必须先用美式格式重新排列字符串(mm / dd / yyyy) 然后你可以使用CDate()。
r = Mid(Date_String , 5, 2) & "/" & Right(Date_String , 2) & "/" & Left(Date_String , 4)
current_date = CDate(r)
答案 2 :(得分:0)
现在也可以使用
Range("K2", Range("K2").End(xlDown)).Select
For Each c In Selection.Cells
c.Value = DateSerial(Left(c.Value, 4), Mid(c.Value, 5, 2), Right(c.Value, 2))
'Following line added only to enforce the format.
c.NumberFormat = "mm/dd/yyyy"
Next