优化date转换循环

我有一组数据(n),约有1500个项目长满DD.MM.YYYY格式的date,Excel无法识别。 我的目标是改变他们擅长的事情,我就是这样做的。

Function date_to_excel() Call public_dims Dim date_i As String date_array = ThisWorkbook.Sheets("Spread").Range(Cells(7, 5), Cells(7 + n, 5)) For i = 0 To n date_i = ThisWorkbook.Sheets("Spread").Cells(7 + i, 5) If date_i <> "" Then date_array = Split(date_i, ".") date_i = date_array(1) & "/" & date_array(0) & "/" & date_array(2) ThisWorkbook.Sheets("Spread").Cells(7 + i, 5) = date_i End If Next End Function 

该function工作正常,但它只是需要很长的时间。 我从社区要求的是如何优化这个循环的想法。 我已经尝试将date的整个范围添加到一个数组,并通过查看,但它似乎不兼容我的方法来更改date格式(date_i =行结束附近)。

您可以使用DMY列格式的文本到列function。

 ThisWorkbook.Sheets("Spread").Range("E7:E" & 7 + n).TextToColumns _ DataType:=xlDelimited, FieldInfo:=Array(1, xlDMYFormat) 

“我已经尝试将date的整个范围添加到一个数组,并通过查看”…

是的,这是要走的路。 一次一个一个地阅读和写入单元格是需要很多时间的。

 Dim vData as Variant Dim vDates() as Date ReDim vDates(1 to n, 1 to 1) as Date Dim i as Long vData = ThisWorkbook.Sheets("Spread").Range("E7").Resize(n,1).Value For i = 1 to n vDates(i,1) = DateSerial(Split(vData(i,1),".")(2),vData(i,1),".")(1),vData(i,1),".")(0)) Next ThisWorkbook.Sheets("Spread").Range("E7").Resize(n,1).Value = vDates