目前我正在尋找更有效的方法,通過VBA,以獲得一個Sub內從2D陣列傳送的信息到一個交錯組的範圍範圍內的Excel工作簿。我在下面的例子中提煉了我需要的東西,並附上代碼;任何幫助將不勝感激。Excel VBA中:填充交錯與2D陣列數據
我聯繫說明什麼,我有(輸入,Array和輸出)工作的一個示例圖像,並寫了我使用下面的代碼示例。爲了簡單起見,讓我們定義的「輸入表」工作表Sheet1作爲和「輸出表」作爲Sheet2的工作簿中:
Option Explicit
Sub TransferData()
Dim myArray as Variant 'Define the array to hold the data.
Dim i as integer 'Define a generic loop counter variable.
myArray = Sheet1.Range("A1:F7") 'Pulls all the relevant data into the array.
myArray的現在看起來酷似範圍。 (我會發布第三個鏈接,但我需要先獲得更多的代表)。
我希望將數據轉移到我的輸出文件,以便它看起來像這樣:
下面是我目前接近的情況:
For i = 1 to ubound(myArray)
Sheet2.Cells(i,1) = myArray(i,1)
Sheet2.Cells(i,3) = myArray(i,2)
Sheet2.Cells(i,6) = myArray(i,3)
Sheet2.Cells(i,7) = myArray(i,4)
Sheet2.Cells(i,8) = myArray(i,5)
Sheet2.Cells(i,9) = myArray(i,6)
Next i
End Sub
我的問題是這樣的;有沒有一種方法可以將數據從陣列傳輸到交錯範圍,這與我如何抓取陣列相似;一次一個範圍?例如,沿着線的東西:
Sheet2.Range("A1:A8") = myArray(1 to 7, 1) 'Note: this is total pseudocode
Sheet2.Range("C1:C8") = myArray(1 to 7, 2) 'Note: this is total pseudocode
等...等...
我相信我已經成功地自學VBA相當數量的,到目前爲止,但我絕對不知道一切,這是我需要幫助的。我試圖儘量減少從VBA寫入工作表的數量;他們真的付出了代價。
任何幫助,非常感謝。
謝謝!
我假設你不只是使用'= Sheet1!B1'作爲Sheet2單元格C2的公式等等。 – mwolfe02
另外,它本身不是答案,但關閉屏幕繪畫可能會加速大大提高你現有的算法('Application.ScreenUpdating = False')。只要不要忘記在錯誤處理程序中並在退出例程之前將其重新打開。 – mwolfe02
當然。首先,謝謝你添加圖片!要編輯sheet1的用戶有刪除行的習慣,並且我試圖避免任何#REF錯誤,如果他們刪除引用的單元格,可能會彈出它們。我的解決方法是簡單地將整個範圍閃存到數組中,並通過快速讀/寫處理事情。那有意義嗎? – Prej1