表形式データの取り扱い:2次元配列とセル範囲の連携

VBAでは、Excelの表(セル範囲)をまるごと扱うために、2次元配列を使うのがとても便利です。
この回では、セル範囲から配列へデータを読み込む方法配列の内容をセルに書き戻す方法について解説します。


1. Excelのセル範囲は2次元配列として扱える

Excelで次のようなデータが入力されているとします:

ABC
佐藤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業務の自動化がより効率的に進みます。

コメント

タイトルとURLをコピーしました