我有一个具有成千上万个日期的工作表,格式如下:-
31.01.2018
(因此,dd.mm.yyyy)
每个单元格的格式均为“常规”。我需要将这些转换为英国日期格式。 为此,我正在使用:-
With ThisWorkbook.Worksheets("Report")
For i = 2 To Lastrow
DateString = .Range("J" & i).Value
Year = Right(DateString , 4)
Month = Mid(DateString , 4, 2)
Day = Left(DateString , 2)
With .Range("J" & i)
.Value = CDate(Day & "/" & Month & "/" & Year)
.NumberFormat = "dd/mm/yyyy"
End With
Next i
End With
这需要花费相当长的时间,我想知道是否存在更有效的日期转换方法?
答案 0 :(得分:0)
如果我理解正确,但是我没有错过任何内容,则无需VBA即可。
只需选择J列,然后将.
替换为/
。
如果您仍要使用VBA进行操作,则可以执行以下操作:
Sub test()
Dim sht As Worksheet
Dim rng As Range
Set sht = ThisWorkbook.Worksheets("Report")
Set rng = sht.Columns("J")
rng.Replace what:=".", replacement:="/"
End Sub
执行大约一万个日期只需不到一秒钟的时间。
编辑:
完成后,值将被excel识别为日期。
这些日期的格式可以设置为欧洲日期。选择列J
并按CTRL+1
,在Number
标签中的Category
下,选择Date
并将其设置为欧洲格式。
或者直接在上面的代码中添加以下行:
rng.NumberFormat = "dd/mm/yyyy"
答案 1 :(得分:0)
我能够使用此处提供的答案来解决这个问题:-
https://stackoverflow.com/a/30609676/1936588
更改
.TextToColumns Destination:=.Cells(1), DataType:=xlFixedWidth, FieldInfo:=Array(0, xlYMDFormat)
收件人
.TextToColumns Destination:=.Cells(1), DataType:=xlFixedWidth, FieldInfo:=Array(0, xlDMYFormat)