我可以使用VBA将日期格式从20140129更改为2014年1月29日吗?
我只是想找出最简单的方法来改变一个巨大的电子表格上的日期格式,但最大的问题似乎是年和月/日的转换。我需要它是mm/dd/yyyy,但目前它是yyyymmdd。谢谢你的帮助 我可以使用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
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:查看我更新的帖子。您可能需要刷新页面。