日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【VBA研究】怎样将单元格数据赋给数组

發布時間:2025/3/13 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【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))

用上面的例程測試發現,即使20多萬條數據,第一種方法用時非常少(4.62963E-05)。而另外一種方法卻差點兒不用時間(0)。

轉載于:https://www.cnblogs.com/yxwkf/p/5369971.html

總結

以上是生活随笔為你收集整理的【VBA研究】怎样将单元格数据赋给数组的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。