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


沒有留言:

張貼留言

職場毒癌:你憑什麼以為你十年寒窗,抵得我三代從商

你憑什麼以為你十年寒窗,抵得我三代從商——這句話已經記不得是從哪裡看到的,可能是某部劇,也可能是某篇 FB 文章標題。 但最近,特別有感。 為什麼會有這種感觸? 職場上有個同事,一路慢慢升到課長,好歹也是管理職,雖說不上鐵飯碗,但在多數人眼裡也算穩定。 結果呢?輾轉換了兩個製造課...