vba单元格批量赋值_VBA代码解决方案第113讲:VBA数组的深入讲解,数组的批量写入时的高效方法利用...

e55593ca0516ca282f7a70607c9d37a9.png

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

代码截图:

0ca231ce4782a2694e00287bbf733161.png

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

f5c29289f0c8abb8b894f3a26142b725.png

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

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

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

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

今日内容回向:

1 数组批量写入如何能有效的节约时间呢?

2 转置函数大家是否还记得呢?

《VBA代码解决方案》终于可以和大家见面了,是我将一些非常实用的VBA内容结集成册,PDF文件,可以从中直接查找到你想要解决问题的思路和方法,可以复制文中的VBA代码直接使用。有需要的朋友微信联络我NZ9668。

ceb887f7e16ef35722c419bd61157b94.png

1742d9ef4c849f8983dbd850d0f2550c.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值