数字到日期

时间:2015-09-15 08:10:05

标签: excel vba excel-vba

我有一个数字形式的日期,如下所示: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

3 个答案:

答案 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