ぱらげです。

上記のように指定のセル範囲にある値をそのまま配列に入れたくなることって多々ありますよね。
通常だとこの場合、A1~A5までをループさせて1セルずつ格納していく方法を思いつきますが、一気に配列に入れる方法があるんです。
ループを使わずできるため、動作としても高速化が実現できます。
Sub makeArray1()
Dim arr As Variant
arr = Sheets("Sheet1").Range("A1:A5")
Sheets("Sheet1").Range("B1:B5") = arr
End Sub
上記コードのように、variant型配列にそのまま範囲を指定して代入するだけで配列ができあがります。
試しに上記の処理を走らせてみましょう。

A1~A5の範囲を配列(arr)に格納したあと、B1~B5にArrを反映しています。
これが例えば、A1~C5までを配列に入れたいという場合もそのまま(“A1~C5”)と指定するだけです。この場合の配列の中身は以下のようになります。

3列分を指定しているため3次元配列になっているのがわかります。
実際に(“D1:F5”)に配列の中身を反映させるコードは以下のようになります。
とても簡単ですね。
Sub makeArray1()
Dim arr As Variant
arr = Sheets("Sheet1").Range("A1:C5")
Sheets("Sheet1").Range("D1:F5") = arr
End Sub
処理を走らせると以下のようになります。

コメント