大家好,我们今日继续讲解VBA代码解决方案的第113讲内容:VBA数组的深入讲解,数组的批量写入时高效方法利用
一,数组的批量写入
实际上用一条语句就可以将数的内容写入单元格区域中,即:单元格区域=数组名
代码:
Sub Mynz_sz6()
'创建数组,并赋值
Dim arr(1 To 60000), i As Long
For i = 1 To 60000
arr(i) = i
Next i
'将数组的值写入单元格(c列)
[C1:C65536].Clear '清除原有数据
Dim startime As Double
startime = Timer
[C1:C60000] = Application.WorksheetFunction.Transpose(arr)
MsgBox "数组写入共用了" & Timer - startime & "秒!"
End Sub
代码截图:
这里,我们用“[C1:C60000]= Application.WorksheetFunction.Transpose(arr)”代替了代码的For循环,不知大家是否还记得我之前讲到的代码呢:
Sub Mynz_sz5()
'创建数组,并赋值
Dim arr(1 To 60000), i As Long
For i = 1 To 60000
arr(i) = i
Next i
'将数组的值写入单元格(C列)
[C1:C65536].Clear '清除原有数据
Dim irow As Long
Dim startime As Double
startime = Timer
For irow = 1 To 60000
Cells(irow, 3) = arr(irow)
Next irow
MsgBox "数组写入共用了" & Timer - startime & "秒!"
End Sub
这段程序运行的时间是:1.07031秒,那么上面的代码有时会是多少呢?我们看看运行的结果:
仅用了0.0625秒,提高了多少倍呢?大家可以算一算。是16倍以上! 所以在大批量的数据需要写入时,我建议尽量不要用循环的方式写入。
二 数组批量写入时需要特别注意的几点。
1 一维数组写入单元格区域时,这个单元格必须是水平方向的,也就是一个一行多列的单元格区域,如果想写入垂直区域,必须使用工作表的Transpose函数转换一下;
2 和工作表的多单元格数组公式一样,数组写入单元格时,单元格的区域必须和数组的大小一致。
今日内容回向:
1 数组批量写入如何能有效的节约时间呢?
2 转置函数大家是否还记得呢?
《VBA代码解决方案》终于可以和大家见面了,是我将一些非常实用的VBA内容结集成册,PDF文件,可以从中直接查找到你想要解决问题的思路和方法,可以复制文中的VBA代码直接使用。有需要的朋友微信联络我NZ9668。