【VBA研究】怎样将单元格数据赋给数组
生活随笔
收集整理的這篇文章主要介紹了
【VBA研究】怎样将单元格数据赋给数组
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
作者:iamlaosong
將工作表中的數據賦給數組或者將數組的數據賦給工作表,一般有兩種。一種是循環的方法,一個一個的傳,這樣的方法一般用于須要對每一個數據特別處理的場合,還有一種是一次性用賦值語句傳,就速度來說,另外一種方法要快得多。看以下例程:
Sub tt()Dim arr1(240000, 4)Dim arr2()lineno = [A1048576].End(xlUp).Row ? ? ?'行數'循環給數組賦值。數組myarr必須先定義大小t1 = Now()For i = 3 To linenok = i - 2arr1(k, 1) = Cells(i, 1)arr1(k, 2) = Cells(i, 2)arr1(k, 3) = Cells(i, 3)arr1(k, 4) = Cells(i, 4)Next it2 = Now()Cells(2, 5) = TimeValue(t2) - TimeValue(t1)'一次性給數組賦值。數組arr不能定義大小和類型t1 = Now()arr2 = Range("a3:d" & lineno)t2 = Now()Cells(2, 6) = TimeValue(t2) - TimeValue(t1)MsgBox arr1(20000, 2) & "=" & arr2(20000, 2)End Sub
只是要注意的是,循環賦值的方法數組必須先定義維數和大小,然后才干使用,而一次性賦值的正好相反。不能定義維數和大小,否則會報錯。此外注意,數據一次性讀入數組arr2后。arr2成為一個二維數組。即使是讀取一列數據。也是二維數組,數組下標都是從1開始,即arr2(1,1),arr2(2,1),arr2(3,1),arr2(4,1),。。
。
另一點要注意,當讀取的工作表非當前工作表時。range對象后面須要加上valuekeyword,否則會報錯,比如:
'方法一:直接讀取DaiLiNo = Sheets("代理點").[B65536].End(xlUp).Row '行數DaiLiName = Sheets("代理點").Range("B2:B" & DaiLiNo).Value'方法二:激活工作表后讀取Worksheets("代理點").SelectDaiLiNo = [B65536].End(xlUp).Row '行數DaiLiName = Range("B2:B" & DaiLiNo)DaiLiNo = DaiLiNo - 1 '數據從第2行開始,所以總數量要減一
假設賦值范圍用行列號表示,則用下列語句(pos_fst, pos_ems是兩個參數,各自是數據起始行和數據所在列):
maxrow = Cells(65536, pos_ems).End(xlUp).Row
Mail = Range(Cells(pos_fst, pos_ems), Cells(maxrow, pos_ems))
轉載于:https://www.cnblogs.com/yxwkf/p/5369971.html
總結
以上是生活随笔為你收集整理的【VBA研究】怎样将单元格数据赋给数组的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ORB-SLAM(四)追踪
- 下一篇: 144.⑨要写信(错排公式与高精度练习)