c++ 数组批量赋值_16倍!数组写入速度大幅提高,是因为采用了批量写入的高效方法...

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

代码截图:

f47e0ffeb5908c4036fdfe29357dc6d1.png

这里,我们用"[C1:C60000]= Application.WorksheetFunction.Transpose(arr)"代替了代码的For循环,不知大家是否还记得我之前讲到的代码呢?如下Mynz_sz5的内容:

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秒,那么Mynz_sz6的代码会用时会是多少呢?我们看看运行的结果:

8a91be6a6b8a6f87b3b326e5ee4dcde7.png

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

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

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

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

今日内容回向:

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值