返回列表 上一主題 發帖

這樣還可提升執行時間?

沒有檔案, 大概猜一下:
Sub 載入資料()
Dim Arr, Brr, i, S, j, Time0#
Time0 = Timer
Arr = 工作表1.UsedRange
ReDim Brr(1 To UBound(Arr), 1 To 13)
S = Array(5, 2, 3, 8, 9, 10, 11, 7, 6, 19, 20, 23, 24)
For i = 1 To UBound(Arr)
  For j = 1 To 13
   Brr(i, j) = Arr(i, S(j - 1))
  Next j
Next i
工作表3.[A4].Resize(UBound(Arr), 13) = Brr
MsgBox "執行時間 " & Timer - Time0 & " 秒", vbOKOnly
End Sub

TOP

回復 3# s7659109


工作表3.Cells(i + 3, 1) = arr(i, 5)  這不是完全使用陣列, 是逐格寫入
arr是來源資料陣列, 但要轉寫的也要設一個陣列容納, 結束後再一次寫入
以原程式只須6.6秒, 照說給的程式應1秒內可完成, 沒看檔案無法測知~~

清除或直接覆蓋速度差異, 要看[清除]動作是一次還是逐格的, 速度差很多~~

另外, 要寫入的區域, 如果有牽動公式自動重算, 那速度一定會慢下來~~

TOP

        靜思自在 : 滴水成河。粒米成蘿,勿輕己靈,勿以善小而不為。
返回列表 上一主題