マクロ講座1次元配列をシート上で表にする
マクロ 89_b回
1次元配列をシート上で表にする
前回2次元配列から1次元配列を取得しましたので、それをイミディエイトウィンドウに表示するのではなく、シート上に記入してみましょう。
(サンプルファイルは、こちらから
マクロ89回サンプルデータ)
1次元配列をシートに転記
1. コードの Debug.Print "one_arr = " & Join(one_arr, ",") の部分を For文でコードを書き直していきます。

2.one_arrという配列のインデックス番号、LBound UBound についてCellsに値を入れていきます。
変数rについてr+12 としたのは、見える位置に書き出すために、13行目から値を入れることにしたためです。
For r = LBound(one_arr) To UBound(one_arr) Cells(r + 12, 3).Value = one_arr(r) Next r

3. マクロを実行すると、取り出した1次元配列がCells(13,1)から書き出されます。

2次元配列の他の列を取り出す
4. こんどは、2次元配列のもう一方の配列2次元目の配列をとりだすことにします。
図では店長名の列ですが、
one_arr = WorksheetFunction.Index(two_arr, 1) を
one_arr = WorksheetFunction.Index(two_arr, 2) と変更してやるだけです。

5. コードは以下のようになります。C列の13行目から書き出すことにします。
Cells(r + 12, 3).Value = one_arr(r)
Sub getoneDimension_fromTwo() Dim two_arr As Variant, one_arr As Variant, r As Long two_arr = shlist.Range("A1").CurrentRegion two_arr = WorksheetFunction.Transpose(two_arr) one_arr = WorksheetFunction.Index(two_arr, 1) ' Debug.Print "one_arr = " & Join(one_arr, ",") For r = LBound(one_arr) To UBound(one_arr) Cells(r + 12, 3).Value = one_arr(r) Next r End Sub

6. 実行結果です。
