VBAでは、Excelの表(セル範囲)をまるごと扱うために、2次元配列を使うのがとても便利です。
この回では、セル範囲から配列へデータを読み込む方法、配列の内容をセルに書き戻す方法について解説します。
目次
1. Excelのセル範囲は2次元配列として扱える
Excelで次のようなデータが入力されているとします:
A | B | C |
---|---|---|
佐藤 | 30 | 男 |
鈴木 | 28 | 女 |
この範囲(Range("A1:C2")
)をVBAで読み込むと、自動的に2行3列の2次元配列として扱われます。
2. セル範囲から配列に読み込む
● サンプルコード
Dim arr As Variant
arr = Range("A1:C2").Value
このように書くだけで、arr
は次のような配列になります:
arr(1,1) = "佐藤"
arr(1,2) = 30
arr(1,3) = "男"
arr(2,1) = "鈴木"
arr(2,2) = 28
arr(2,3) = "女"
ポイント:
Range("A1:C2").Value
で取得した配列は **1始まり(1から数える)**です。
3. 配列の内容をセルに書き戻す
読み込んだ配列の内容を、他のセル範囲に書き戻すこともできます。
● サンプルコード
Range("E1:G2").Value = arr
これで、先ほどの配列の内容が、E1:G2にそっくりそのまま書き込まれます。
4. 配列を使うメリット
項目 | 内容 |
---|---|
高速 | 配列に読み込んで一括処理することで、セルを1つずつ操作するよりも高速になります。 |
シンプル | 一度配列に入れてしまえば、Forループなどで簡単に処理できます。 |
柔軟 | 値の変更や条件によるフィルタ、加工などがしやすいです。 |
5. ループ処理で配列を扱う例
● 全要素を表示する
Dim i As Long, j As Long
Dim arr As Variant
arr = Range("A1:C2").Value
For i = LBound(arr, 1) To UBound(arr, 1)
For j = LBound(arr, 2) To UBound(arr, 2)
Debug.Print arr(i, j)
Next j
Next i
このようにして、表全体をスキャンして処理することができます。
6. まとめ
Range("A1:C2").Value
は2次元配列としてそのまま使える- 配列からセルへ、セルから配列へは簡単に変換可能
- 配列を使うことで、大量のデータ処理がスムーズにできる
VBAの配列処理の基本を押さえておくと、Excel業務の自動化がより効率的に進みます。
コメント