標題:
合併Ranges的內容
[打印本頁]
作者:
clio
時間:
2017-8-21 09:04
標題:
合併Ranges的內容
各位大大:
小弟這邊遇到一個問題,想尋求解答問題如下:
程式每次由條件選取到的Excel.Ranges數不同,想合併Ranges的每一個內容值,並用", "來作區隔,基本的可以用下列方法:
Dim a As Range
Dim Aranges As Range
Dim Word As String
Dim A_Array() As Variant
For Each a In Aranges
Word = Word & a.Value & ", "
Next a
但是當 Aranges的數量很大時,是很花時間的,所以想用「Join」合併陣列的方法來達成,速度應該會快上許多,
A_Array=Aranges
上面會讓A_Array變成是二維陣列,而Join只能用在一維陣列上
這樣想求教各位大大,是否有方法能將二維直接擷取成一維陣列,不透過
作者:
ikboy
時間:
2017-8-21 21:44
直接在array中循環,然後再寫入,是最快。
作者:
ML089
時間:
2017-8-22 23:37
Sub ex()
[A1:A10] = [{1;2;3;4;5;6;7;8;9;10}]
Arr = [A1:A10]
xj = Join(Application.Transpose(Arr), ",")
Debug.Print xj
[B1:K1] = [{101,102,103,104,105,106,107,108,109,110}]
Arr = [B1:K1]
xj = Join(Application.Transpose(Application.Transpose(Arr)), ",")
Debug.Print xj
End Sub
作者:
clio
時間:
2017-8-23 14:27
回復
3#
ML089
感謝ML089版主的回覆
您的方法解決了我的困境,只是有一點不太清楚,想再跟您請教一下
我發現[A1:A10],用Application.Transpose(Arr)就會轉出一維陣列
[B1:K1],用Application.Transpose(Arr)第一次轉出仍是二維陣列,需要再轉一次,才會變成一維陣列
不太清楚原理為何?或是有什麼結構上的差異呢
作者:
ML089
時間:
2017-8-23 16:24
回復
4#
clio
VBA 的一維是水平陣列
[B1:K1]是水平陣列,轉一次為垂直陣列,再轉一次為水平陣列才能變成一維陣列。
作者:
clio
時間:
2017-8-23 18:41
回復
5#
ML089
清楚了,另外一個問題請教版主
Arr = [B1:K1]
Arr = Application.Index(Arr, 0)
能直接把Arr變成一維陣列,不需再使用Transpose轉換
但是若
Arr = [A1:A10]
Arr = Application.Index(Arr, , 0)
Arr仍是垂直陣列,需要使用Transpose轉換成一維陣列
這個情況不是很了解他的架構為何,能否請版大再給我指導一下,感謝您
作者:
ML089
時間:
2017-8-23 21:14
本帖最後由 ML089 於 2017-8-24 03:06 編輯
回復
6#
clio
Sub ex()
[A1:J10] = [row(1:10)*100+column(A:J)]
Arr = [A1:J10]
Brr = Application.Index(Arr, 1) '取水平陣列,一維陣列(N)
Crr = Application.Index(Arr, , 1) '取垂直陣列,二維陣列(Nx1)
Debug.Print Join(Brr, ",")
'Debug.Print Join(Crr, ",") '錯誤,非一維陣列無法使用JOIN函數
Debug.Print Join(Application.Transpose(Crr), ",") 'Transpose將垂直陣列(二維10x1陣列)轉為一維陣列
End Sub
作者:
clio
時間:
2017-8-24 09:14
回復
7#
ML089
完全了解了,感謝版主耐心的教導,萬分感謝
作者:
clio
時間:
2017-8-24 09:18
回復
2#
ikboy
感謝ikboy的回覆,使用Join, Range, Array這三種方法我都有測試過
大約提供我測試的時間,總體而言以Join的速度最快,只是他有上限是65536筆,超過就無法使用Join,而買100筆到65536筆不同數據的測試結果,Range使用For each... next的方法,與Array() 的方式,二個測得的時間是接近,可以機乎說花的時間是一樣的歐,以上是我實際測試的心得,可以加減參考,感謝您。
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)