2023年12月4日 星期一

vba陣列 不連續寫入大量資料技巧

說明一次寫入與copy 方式時間差距:


Sub CommandButton1_Click()

Debug.Print "陣列大量資料寫入"

t = Timer    

    DD = ActiveSheet.Range("A1:E1337")    

    Debug.Print "資料筆數" & Application.CountA(DD)

    Sheets(2).Range("A1:E1337") = DD    

    Debug.Print "花費時間" & Timer - t

Debug.Print "copy 資料寫入"

t = Timer

    ActiveSheet.Range("A1:E1337").Copy Sheets(2).Range("A1") 

    Debug.Print "花費時間" & Timer - t''

DD = Array(1, 2, 3)

ActiveSheet.Range("h1:j1") = DD

Debug.Print "一維陣列不支援不連續"

ActiveSheet.Range("h3,i3,l5") = DD

End Sub

資料分散時怎辦?

用FOR EACH IN,於不連續儲存格寫入技巧,解說SET物件的技巧


 Sub 寫入陣列到儲存格a()

    Dim 資料陣列 As Variant

    Dim i As Integer

    

    ' 將資料存入陣列

    資料陣列 = Array(1, 2, 3)    

    ' 將設置 range 物件

    Set myrange = ActiveSheet.Range("a1,b3,a10")

           i = 0    

    For Each a In myrange

        ActiveSheet.Range(a.Address).Value = 資料陣列(i)

        i = i + 1 '

    Next

End Sub


沒有留言:

張貼留言

指數變化(2024.12.20)

 指數變化(2024.12.20) 上周焦點:      FED 利率 降0.25 本周愛看:      美國消費者信心指數 12/23      日本失業率 12/27 本周指數變化: 趨勢: