Excel VBA 之 数组的优点及应用

Excel VBA 之 数组的优点及应用Application ScreenUpdati False For j 1 To 12End Sub 代码运行效果如下 数组实现可以看出 用数组实现一共用时 0 086 秒 速度明显快多了 如果数据量更大 那么数

大家好,欢迎来到IT知识分享网。

Excel VBA 之 数组的优点及应用

今天,有网友表示,想学一下VBA数组的应用。

下面我就讲一个简单的例子,将一个960行12列的数据重新整理,放到P列

源数据如图所示:

Excel VBA 之 数组的优点及应用

源数据

接下来我先运用遍历单元格的方法来实现,代码如下

Sub Main() t = Timer Application.ScreenUpdating = False Dim r r = 1 For i = 1 To 960 For j = 1 To 12 Cells(r, 16) = Cells(i, j) r = r + 1 Next Next Application.ScreenUpdating = True MsgBox (Timer - t)'显示程序运行时间 End Sub

代码很好理解,遍历每个单元格,然后依次复制到P列

代码运行效果如下:

Excel VBA 之 数组的优点及应用

遍历单元格实现

可以看出,一共用时0.289秒

下面,我用数组的方法来实现,代码如下:

Sub Main_Arr() t = Timer Application.ScreenUpdating = False Dim arr Dim arrP() Dim r, c, n arr = Sheets(1).[A1].CurrentRegion '将数据存入数组arr,arr是个二维数组 r = UBound(arr) '获取数组的第一维的最大下标,即数据的行数 c = UBound(arr, 2) '获取数组的第二维的最大下标,即数据的列数 ReDim arrP(1 To r * c) '设定一维数组arrP的大小 '遍历数组arr,将每个元素复制到arrP n = 1 For i = 1 To r For j = 1 To c arrP(n) = arr(i, j) n = n + 1 Next Next [P1].Resize(r * c, 1) = Application.Transpose(arrP) '将一维数组arrP(一行)转置成一列,放到P列 Application.ScreenUpdating = True MsgBox (Timer - t) End Sub

代码运行效果如下:

Excel VBA 之 数组的优点及应用

数组实现

可以看出,用数组实现一共用时0.086秒,速度明显快多了,如果数据量更大,那么数组优势将会更明显。

大家可以点开下面链接,查看我的其他文章哦!

848个Excel VBA 实用技巧,实例+详细解析,入门必看,建议收藏

Excel VBA 之 去除重复项

Excel VBA 之 随机抽取数据

Excel VBA 之 随机抽取数据(续集)

Excel VBA 之 统计词汇出现次数

Excel VBA 之 按需求移动、复制文件

等等…

喜欢本文章的朋友记得收藏、点赞、关注哦,网友们如果在Excel中遇到问题都可以找我交流,也可以在评论区或私信告诉我你想看到的VBA办公教程,我将在下期分享给大家,以后不定期更新Excel VBA技巧!

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/166242.html

(0)
上一篇 2025-01-05 09:15
下一篇 2025-01-05 09:26

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信