マクロ講座2次元配列を1次元配列にする方法

2次元配列を1次元配列にする方法
2次元配列を1次元配列にする方法

マクロ 89回

シート上の表を配列として取得後、1次元にしたい

すでに2次元配列作成済みで、それを1次元配列にする方法を考えていきます。
2次元配列で配列を1次元配列に分けたり、取り出したりする方法。

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

2次元配列を1次元として取り出したい

1. マクロ講座87回でデータとして取得したい範囲を配列として取り込むコードは以下のようなコードでした。 配列として利用したい範囲にはbranchArr という変数名を使い、Variant型で宣言することにします。 また、シート名をshlistという名前に変更してあります。

Sub getrange_addsheet()
    Dim branchArr As Variant
    branchArr = shlist.Range("A1").CurrentRegion
End Sub

2次元配列を1次元配列にする方法1

2. 今回は、2次元配列の1部分を1次元として利用したいということです。つまりA列支店名の部分となります。元のコードに少し手を加えて範囲として取得した配列はtwo_arr, 1次元にした配列をone_arrとして区別します。


2次元配列を1次元配列にする方法2

2次元配列は、この図のように取得されています。


2次元配列を1次元配列にする方法2

Transpose関数、Index関数を使う

3.どのようにして2次元配列から1次元を取り出すかというと、 このままでは縦に支店名が入っているので、縦に長い配列です。 ワークシート関数のTranspose関数を使って、縦横変換すると、横に支店名が入ります。


2次元配列を1次元配列にする方法3

Transpose関数を使って、縦横変換した2次元配列two_arrは、このようになりました。


2次元配列を1次元配列にする方法5

4.つづいて、この2次元配列の1行目が支店名ですので、 one_arrは、two_arrという2次元配列の1行目ということです。


2次元配列を1次元配列にする方法4

6. ローカルウィンドウで、取得できたことが確認できます。


2次元配列を1次元配列にする方法6

7.さらに、取得した1次元配列をイミディエイトウィンドウに表示してみましょう。 Debug.Print


2次元配列を1次元配列にする方法7

8. 簡単に一列で表示するには、JOIN関数を使います。

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, ",")
End Sub

2次元配列を1次元配列にする方法8
この記事は動画でも視聴できます。

こちらもおすすめ