VBAでデータの転記処理をする
マクロ 71回
VBAでデータの転記処理をするには?
実務で一番必要とされるマクロといえば、データの転記処理かもしれません。
今回から シリーズで転記処理について 解説していきます。
(サンプルファイルは、こちらから → 動画32回サンプルデータ)
顧客リストのデータを転記する①
1. シートは入力する表と集計する表とに分かれています。
![VBAでデータの転記処理をする1 border=0](gazo2019/macro/macro_71_01.png)
2. 入力で入れたデータをこちらの集計表に1行ずつ追加していく仕組みです。
![VBAでデータの転記処理をする2 border=0](gazo2019/macro/macro_71_02.png)
3. 表示タブから、新しいウィンドウを開くをクリックして ウィンドウを二つにします。 そしてこのように配置しました。どの セルの値を、集計表のどこに配置するか、ということがわかりやすくなると思います。
![VBAでデータの転記処理をする3 border=0](gazo2019/macro/macro_71_03.png)
4. Visual Basic Editor を開いてコードを書いていきます。
![VBAでデータの転記処理をする4 border=0](gazo2019/macro/macro_71_04.png)
転記処理用に二つの変数を設定
5. inputData というシートに ある顧客 IDの”a” というデータをMdataという集計表に転記します。inputData シートは、転記処理をするのに都合がいいように、 表示形式をR1C1に変更します。
![VBAでデータの転記処理をする5 border=0](gazo2019/macro/macro_71_05.png)
6. 元データのあるほうをnyuuryoku という 変数に、 入力先の ほうをMasterRangeという変数に宣言しました。
![VBAでデータの転記処理をする6 border=0](gazo2019/macro/macro_71_06.png)
ただ名前を付けただけでは何も入っていないからの箱のようなものですから、 それぞれの変数に対して 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 が転記されたのが確認できます。
![VBAでデータの転記処理をする7 border=0](gazo2019/macro/macro_71_07.png)
8. 次に 1つ下の顧客名以下はどうするかというコードを書いていきます。 1つ下のセルを選択するには、オフセット プロパティを使って元のセルから、行数列数を指定して移動します。
![VBAでデータの転記処理をする8 border=0](gazo2019/macro/macro_71_08.png)
列を一つ右に移動するにはOffset(0,1) 行を一つ下に移動するにはOffset(1,0)
MasterRange.Value = nyuuryoku.Value MasterRange.Offset(0, 1).Value = nyuuryoku.Offset(1, 0).Value
Offsetプロパティで行や列を移動する
9.同じ要領で、他のセルに対しても順番に移動できるようにOffsetの値を書き換えていきます。
![VBAでデータの転記処理をする9 border=0](gazo2019/macro/macro_71_09.png)
10. 書き換えると コードは次のようになります。
![VBAでデータの転記処理をする10 border=0](gazo2019/macro/macro_71_10.png)
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)
![VBAでデータの転記処理をする11 border=0](gazo2019/macro/macro_71_11.png)
12. これで、常に、新しいデータは次行に転記されるようになります。
![VBAでデータの転記処理をする12 border=0](gazo2019/macro/macro_71_12.png)
13.それでは実際のデータを入力して確認してみましょう。
![NAMAE13 border=0](gazo2019/macro/macro_71_13.png)
14.入力した顧客データが、顧客の集計表の方に転記されました。
![NAMAE13 border=0](gazo2019/macro/macro_71_14.png)