VBAでデータの転記処理をする
マクロ 71回
VBAでデータの転記処理をするには?
実務で一番必要とされるマクロといえば、データの転記処理かもしれません。
今回から シリーズで転記処理について 解説していきます。
(サンプルファイルは、こちらから → 動画32回サンプルデータ)
顧客リストのデータを転記する①
1. シートは入力する表と集計する表とに分かれています。
2. 入力で入れたデータをこちらの集計表に1行ずつ追加していく仕組みです。
3. 表示タブから、新しいウィンドウを開くをクリックして ウィンドウを二つにします。 そしてこのように配置しました。どの セルの値を、集計表のどこに配置するか、ということがわかりやすくなると思います。
4. Visual Basic Editor を開いてコードを書いていきます。
転記処理用に二つの変数を設定
5. inputData というシートに ある顧客 IDの”a” というデータをMdataという集計表に転記します。inputData シートは、転記処理をするのに都合がいいように、 表示形式をR1C1に変更します。
6. 元データのあるほうをnyuuryoku という 変数に、 入力先の ほうをMasterRangeという変数に宣言しました。
ただ名前を付けただけでは何も入っていないからの箱のようなものですから、 それぞれの変数に対して set ステートメントで オブジェクトを格納してやります。
Dim nyuuryoku As Range, MasterRange As Range Set nyuuryoku = Worksheets("Inputdata").Cells(2, 3) Set MasterRange = Worksheets("Mdata").Cells(3, 2)
7.さらに”MasterRange.Value = nyuuryoku.Value” と記入すれば、データが入力表から集計表の方に転記されます。マクロコードを実行すると 図のように顧客 ID が転記されたのが確認できます。
8. 次に 1つ下の顧客名以下はどうするかというコードを書いていきます。 1つ下のセルを選択するには、オフセット プロパティを使って元のセルから、行数列数を指定して移動します。
列を一つ右に移動するにはOffset(0,1) 行を一つ下に移動するにはOffset(1,0)
MasterRange.Value = nyuuryoku.Value MasterRange.Offset(0, 1).Value = nyuuryoku.Offset(1, 0).Value
Offsetプロパティで行や列を移動する
9.同じ要領で、他のセルに対しても順番に移動できるようにOffsetの値を書き換えていきます。
10. 書き換えると コードは次のようになります。
Sub tenki() Dim nyuuryoku As Range, MasterRange As Range Set nyuuryoku = Worksheets("Inputdata").Cells(2, 3) Set MasterRange = Worksheets("Mdata").Cells(3, 2) MasterRange.Value = nyuuryoku.Value MasterRange.Offset(0, 1).Value = nyuuryoku.Offset(1, 0).Value MasterRange.Offset(0, 2).Value = nyuuryoku.Offset(2, 0).Value MasterRange.Offset(0, 3).Value = nyuuryoku.Offset(3, 0).Value MasterRange.Offset(0, 4).Value = nyuuryoku.Offset(4, 0).Value MasterRange.Offset(0, 5).Value = nyuuryoku.Offset(5, 0).Value MasterRange.Offset(0, 6).Value = nyuuryoku.Offset(6, 0).Value MasterRange.Offset(0, 7).Value = nyuuryoku.Offset(7, 0).Value MasterRange.Offset(0, 8).Value = nyuuryoku.Offset(8, 0).Value End Sub
次行以降はどのようなコードで 入力するか?
11.新しいデータを入力するには、
MasterRange = Worksheets("Mdata").Cells(3, 2)
を書き換えます。
Set MasterRange = Worksheets("Mdata").Cells(Rows.Count, 2).End(xlUp).Offset(1, 0)
12. これで、常に、新しいデータは次行に転記されるようになります。
13.それでは実際のデータを入力して確認してみましょう。
14.入力した顧客データが、顧客の集計表の方に転記されました。