Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以使用VBA将日期格式从20140129更改为2014年1月29日吗?_Vba_Date_Excel_Date Format - Fatal编程技术网

我可以使用VBA将日期格式从20140129更改为2014年1月29日吗?

我可以使用VBA将日期格式从20140129更改为2014年1月29日吗?,vba,date,excel,date-format,Vba,Date,Excel,Date Format,我只是想找出最简单的方法来改变一个巨大的电子表格上的日期格式,但最大的问题似乎是年和月/日的转换。我需要它是mm/dd/yyyy,但目前它是yyyymmdd。谢谢你的帮助 我可以使用VBA将日期格式从20140129更改为2014年1月29日吗 你是说像这样 Sub Test() Dim temp As String Dim D As String, M As String, Y As String temp = "20140129" Y = Left(tem

我只是想找出最简单的方法来改变一个巨大的电子表格上的日期格式,但最大的问题似乎是年和月/日的转换。我需要它是mm/dd/yyyy,但目前它是yyyymmdd。谢谢你的帮助

我可以使用VBA将日期格式从20140129更改为2014年1月29日吗

你是说像这样

Sub Test()
    Dim temp As String
    Dim D As String, M As String, Y As String

    temp = "20140129"

    Y = Left(temp, 4)
    M = Mid(temp, 5, 2)
    D = Right(temp, 2)

    '~~> This will give you 01/29/2014
    Debug.Print Format(DateSerial(Val(Y), Val(M), Val(D)), "mm/dd/yyyy")
End Sub
编辑

从评论中跟进

使用此代码(经过尝试和测试)。我假设日期(作为字符串)存储在A列中,从
A1
开始,比如
Sheet1

Sub Test()
    Dim temp As String
    Dim D As String, M As String, Y As String
    Dim ws As Worksheet
    Dim lRow As Long, i As Long

    '~~> Change this to the relevant worksheet
    Set ws = ThisWorkbook.Sheets("Sheet2")

    With ws
        lRow = .Range("A" & .Rows.Count).End(xlUp).Row

        For i = 1 To lRow
            temp = CStr(.Range("A" & i).Value)

            Y = Left(temp, 4)
            M = Mid(temp, 5, 2)
            D = Right(temp, 2)

            .Range("A" & i).NumberFormat = "mm/dd/yyyy"

            '~~> This will give you 01/29/2014
            .Range("A" & i).Formula = Format(DateSerial(Val(Y), Val(M), Val(D)), "mm/dd/yyyy")
        Next i


    End With
End Sub
屏幕截图


-记录您自己更改格式的内容。有过多的日期格式-只需右键单击并单击“更改格式”,问题就出现在我的电子表格上——今年是第一年。我查看了所有提供的格式,没有一种格式会在今年年底更新。他们试图将20140129改为20/14/0129,这显然会导致错误。你在西半球吗?您可能有一个版本的excel,它已本地化为使用非西方日期格式。在任何情况下,这都应该回答您的问题:您可能还希望验证您拥有的日期实际上是日期,而不仅仅是字符串/文本。你可以用IsNumber(cell_ref)来实现这一点。对不起,Stepan,我可能应该说它实际上只是一个字符串。它来自另一份报告,因此Excel无法将其识别为日期。最好是将其保留为字符串,但对于在另一个系统上使用的宏,我需要使用mm/dd/yyyy格式。所以我想我真正需要做的就是取一个字符串,取前四个字符,把它们移到末尾,然后在里面放几个/。请原谅我说得不清楚,我仍在努力理解。谢谢@下流选民。想发表评论吗?我看没问题…………否决票不是我投的,但这看起来很接近我要做的。但我需要将它用于数百个日期,这些日期都不同,但格式都是yyyymmdd。@novak:使用循环:)@novak:查看我更新的帖子。您可能需要刷新页面。