VBA将特定单元格的数据插入MYSQL vba把单元格区域赋给数组_数组

大家好,我们今日继续讲解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

代码截图:

VBA将特定单元格的数据插入MYSQL vba把单元格区域赋给数组_数组_02

这里,我们用“[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秒,那么上面的代码有时会是多少呢?我们看看运行的结果:

VBA将特定单元格的数据插入MYSQL vba把单元格区域赋给数组_数据_03

仅用了0.0625秒,提高了多少倍呢?大家可以算一算。是16倍以上! 所以在大批量的数据需要写入时,我建议尽量不要用循环的方式写入。

二 数组批量写入时需要特别注意的几点。

1 一维数组写入单元格区域时,这个单元格必须是水平方向的,也就是一个一行多列的单元格区域,如果想写入垂直区域,必须使用工作表的Transpose函数转换一下;

2 和工作表的多单元格数组公式一样,数组写入单元格时,单元格的区域必须和数组的大小一致。