Digital_Neko

フリーランスプログラマー

動的配列の効果的な使い方 VBAでの2次元配列を使った、データの他のブックやシートへの移動

動的配列はExcelシートに取り込んだCSVデータを、他のシートやブックに移動したい時に便利です。移動先のシートやブックの項目が、CSVデータの取り込み項目順でない事があるからです。動的配列の宣言は下記となります。ポイントとして、Option Base1を使い配列の下限値を1とします。

Option Base 1(モジュールの先頭に記述します)
Dim myData() as String(動的配列の宣言)

ここで、CSVデータの最終行を求めます。列はCSVデータの項目数分あるので、ここでは求めた最終行をLastRow、列数を3とします。ReDimステートメントで、配列の要素数を確定します。

ReDim myData(LastRow,3)

ループ処理を使って、配列にCSVデータを配列に格納します。

For i=1 to LastRow
 myData(i,1)=Cells(i,1).Value
 myData(i,2)=Cells(i,2).Value
 myData(i,3)=Cells(i,3).Value
Next i

配列にCSVデータをループ処理で格納したので、他のブックやシートをアクティブにします。

Workbooks(“ブック名”).Worksheets(“シート名”).Activate

データ移動先ではループ処理で配列のデータを対象のセルに入力します。この場合は2列目のセルにCSVデータの2列目、3列目のセルにCSVデータの3列目、5列目のセルにCSVデータの1列目を入力しています。

For I =1 to LastRow
Cells(i,2).Value=myData(i,2)
Cells(i,3).Value=myData(i,3)
Cells(i,5).Value=myData(i,1)
Next i

これで、配列に格納したデータを希望の場所に入力できます。