Excel VBA 之 數組的優點及應用


Excel VBA 之 數組的優點及應用

今天,有網友表示,想學一下VBA數組的應用。

下面我就講一個簡單的例子,將一個960行12列的數據重新整理,放到P列

源數據如圖所示:

Excel VBA 之 數組的優點及應用

源數據


接下來我先運用遍歷單元格的方法來實現,代碼如下

<code>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/<code>

代碼很好理解,遍歷每個單元格,然後依次複製到P列

代碼運行效果如下:

Excel VBA 之 數組的優點及應用

遍歷單元格實現

可以看出,一共用時0.289秒


下面,我用數組的方法來實現,代碼如下:

<code>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/<code>

代碼運行效果如下:


Excel VBA 之 數組的優點及應用

數組實現

可以看出,用數組實現一共用時0.086秒,速度明顯快多了,如果數據量更大,那麼數組優勢將會更明顯。


大家可以點開下面鏈接,查看我的其他文章哦!

等等...


喜歡本文章的朋友記得收藏、點贊、關注哦,網友們如果在Excel中遇到問題都可以找我交流,也可以在評論區或私信告訴我你想看到的VBA辦公教程,我將在下期分享給大家,以後不定期更新Excel VBA技巧!


分享到:


相關文章: