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