マクロ講座1次元配列をシート上で表にする

1次元配列をシート上で表にする
1次元配列をシート上で表にする

マクロ 89_b回

1次元配列をシート上で表にする

前回2次元配列から1次元配列を取得しましたので、それをイミディエイトウィンドウに表示するのではなく、シート上に記入してみましょう。


(サンプルファイルは、こちらから マクロ89回サンプルデータ

1次元配列をシートに転記

1. コードの Debug.Print "one_arr = " & Join(one_arr, ",") の部分を For文でコードを書き直していきます。


1次元配列をシート上で表にする1

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

1次元配列をシート上で表にする2

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


1次元配列をシート上で表にする3

2次元配列の他の列を取り出す

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


1次元配列をシート上で表にする4

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

1次元配列をシート上で表にする5

6. 実行結果です。


1次元配列をシート上で表にする6