標題:
[發問]
VBA 動態陣列操作取值
[打印本頁]
作者:
u800901
時間:
2021-1-26 12:27
標題:
VBA 動態陣列操作取值
各位前輩好
請問要如何操作陣列取某些值之後偏移再取值?
假設workbooks("book1").sheets("sheet1")內有個動態陣列array()
我要執行N次,固定取3個值
第一次取陣列內位置0~2的值,輸出值到"book2"中"sheet2"的"A1:C1"
第二次取3~5,輸出值到"book2"中"sheet3"的"A1:C1"
第三次取6~8,輸出值到"book2"中"sheet4"的"A1:C1"
依此類推
因為資料量會一直增加
原本用VBA寫出動作的功能
但是發現資料量比較多的時候,運作會需要一段時間
因為是逐筆資料複製貼上→新增分頁→貼上
想說用陣列加快速度
不知道上面想法可不可行
目前只會寫出全部資料寫入陣列內
輸出到book2中sheet2的"A1:C1"內
但是要輸出到下一頁就卡關了
請各位前輩指點小弟:'(
作者:
u800901
時間:
2021-1-26 21:41
各位前輩
小弟自己摸索出目前可運作的程式碼如下
Dim Arr_ssd, Arr_temp, ReArr_1, ReArr_2, Arr_out As Variant
Dim a, b, c, i, j, k, rr, cc, x, y As Variant
Application.DisplayAlerts = False
Windows("array-1.xls").Activate
i = Workbooks("array-1").Sheets("統計表").UsedRange.Rows.Count
j = Round((i / 25) + 0.5)
k = 0 'k為判斷執行次數
Worksheets("統計表").Activate
Arr_ssd = Sheets("統計表").Range([A2], Cells(i, 1).Offset(, 7)).Value
Arr_out = Sheets("匯出表").Range("A2:I26")
Dim dd As Range
Set dd = Sheets("匯出表").Range("A2")
ReDim Arr_temp(1 To 25, 1 To 9)
ReArr_1 = WorksheetFunction.Transpose(Arr_ssd)
ReDim Preserve ReArr_1(1 To 9, 1 To 1 + (25 * j))
ReArr_2 = WorksheetFunction.Transpose(ReArr_1)
x = 1
y = 1
rr = 0
For k = 1 To j
For y = 1 + (rr) To 25 + (rr)
For x = 1 To 9
Arr_temp(y - (rr), x) = ReArr_2(y, x)
Debug.Print Arr_temp(y - (rr), x)
Next x
Next y
rr = rr + 25
dd.Resize(UBound(Arr_temp, 1), UBound(Arr_temp, 2)).Value = Arr_temp
'輸出表單
Next k
複製代碼
不知道有沒有更簡單的方式?想盡可能減少使用迴圈
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)