VBA【爆速】【行列変換】【一次元 二次元 変換】【”列”ではなく”行”として認識】させよう
VBAで「一次元配列」をワークシート上に貼付けすると行方向の配列と認識されないですよね。
ワークシート上だと「一次元配列」は列方向のデータとして認識されてしまいます。
VBAで配列の行列を入れ替えする方法をまとめましたので、紹介します。
配列をおさらいしたい方はこちら(配列の基本)をご覧ください。
配列の他にVBAを簡単に高速化する方法が知りたい方は、こちらをご覧ください。
◆一次元配列を二次元配列に変換
・一次元を二次元変換サンプルコード
Dim Ary(3), bufAry
bufAry = WorksheetFunction.Transpose(Ary)
ExcelVBAの配列で行列の入れ替えは上記のサンプルコードを実行すれば、できます。
簡単ですよね。
VBAでは、配列を一次元配列から二次元配列に変換することによって、配列の行と列を入れ替えすることになります。
なので、ワークシートに貼付けしても、ちゃんと、行と列が合っていると思います。
VBAで「Transpose」関数を使用すると
かなりお手軽に一次元配列から二次元配列に変換する事ができます。
・注意事項
VBAの「Transpose」を使用すると、配列の最小要素の数値が必ず「1」に変換されてしまうので
要注意です。
配列の最小要素数の数値が「0」でも「2」でも「1」に変更されてしまいます。
◆最初から二次元配列として扱う
・二次元配列として扱うサンプルコード
Dim Ary(0, 3)
ExcelVBAでは、最初から二次元配列として扱う事によって、配列の行と列を入れ替えることなく
最初から、一次元目が「行」、二次元目が「列」と認識されます。
いちいち変換し忘れることがあり、気づいた時には、めんどくさってなりがちです。
「Transpose」関数を使えばいいのですが、できれば、処理を増やしたくないですよね。
そんな方は、最初から配列を二次元配列として、扱っておけば、いちいち変換する必要もありません。さらに、「Transpose」関数を使うことを覚えておく必要もありません。
「Transpose」関数は、覚えれるなら覚えた方が
VBAで困った時に一次元配列から二次元配列に変換する時に便利ですけどね。
エクセルシート上に配列を貼付けする予定がある場合は、問答無用で最初から二次元配列として扱っておいてもいいでしょう。
ただし、二次元配列は要素数の拡張ができませんので、ご注意ください。
一応、配列の中に配列を作れば、疑似的に要素数の拡張はできます。
疑似的に要素数を拡張したい方は、こちら()をご覧ください。*****
◆まとめ
VBAでは「1次元配列を2次元配列に変換」できるシート関数「Transpose」がありますが
覚えるのが、だるいって方は、常に「最初から二次元配列として扱う」をすればいいと思います。