2013-08-28 44 views
4

我在單元格B6:H14的Excel工作表中有文本數據。範圍內的二維數組

一些行將有2個單元格的內容,而另一些有4個,一些將有7個。我如何將它們複製到2維數組?我已經知道尺寸,所以我沒有聲明動態代碼的尺寸。

我是否需要使用循環(目前我正在計劃使用)?

還是有更容易/更優雅的方式?

+4

我downvoted這是你似乎沒有請求幫助之前嘗試新鮮事物。有一些現有的答案,如http://stackoverflow.com/q/13663370這將有所幫助。 – brettdj

+0

@brettdj實際上,您鏈接的確切問題是詢問如何將二維數組輸出到一個範圍內 - 這個問題是關於如何做到的。 –

+1

@RichardLeMesurier這個問題展示瞭如何將一個範圍放入一個數組,處理它並將其轉儲回一個範圍 - 也就是說,它的範圍都是array(這個問題被問到)以及數組的範圍。這與Mehow/VBA4All相同/這是一個愉快的回答 – brettdj

回答

37

假設您的電子表格看起來有點像這樣

spreadsheet

有一種非常簡單的方法,堅持在一個二維數組

Dim arr as Variant 
arr = Range("B6:H14").Value 

打印這個數組回到最簡單的方法電子表格

Sub PrintVariantArr() 

    Dim arr As Variant 
    arr = Range("B6:H14") 

    Range("B16").Resize(UBound(arr, 1), UBound(arr, 2)) = arr 

End Sub 

或者你可以中心提供全方位/循環數組

Sub RangeToArray() 

    Dim arr As Variant 
    arr = Range("B6:H14").Value 
    Dim r As Long, c As Long 

    r = 16 
    c = 2 

    Dim i, j 
    For i = LBound(arr, 1) To UBound(arr, 1) 
     For j = LBound(arr, 2) To UBound(arr, 2) 
      Cells(r, c) = arr(i, j) 
      c = c + 1 
     Next j 
     c = 2 
     r = r + 1 
    Next i 

End Sub 

而且你的陣列打印回電子表格

result