TransposeN1toArray1D|縦1列の2次元配列を型を保持したまま一次元配列へ変換(転置) | Excel VBA
- yuji fukami
- 2025年12月23日
- 読了時間: 2分

<概要 (転置)>
TransposeN1toArray1D は、Nx1(縦一列)の二次元配列を、要素の型を保持したまま一次元配列へ変換(転置)するための汎用プロシージャです。
Excel VBA では WorksheetFunction.Transpose を使用すると、日付型や数値型が文字列に変換されてしまうという問題があります。
特に日付配列を扱う処理や、後続で計算・比較処理を行う場合、この型変換は致命的な不具合の原因になります。
本プロシージャは以下の特徴を持っています。
・Nx1 形式の二次元配列専用(縦一列)
・Date / Double / Long などの型を保持
・要素が Object(Range や Class 等)の場合も対応
・開始インデックスが 1 の配列のみを受け付け、安全性を重視
「WorksheetFunction.Transpose の代替として、安全に配列変換したい」という場面で、汎用的に利用できる関数です。
<実行例>
実行例のサンプルコードは次の通りです
実行結果のイミディエイトウィンドウは次のようになります。

実行結果を見ると、TransposeN1toArray1D とWorksheetFunction.Transpose の挙動の違いが明確に分かります。
TransposeN1toArray1D を使用した場合、各要素は Date 型のまま一次元配列へ格納されます。
そのため、日付計算や比較処理をそのまま続けて行うことが可能です。
一方、WorksheetFunction.Transpose を使用した場合、Date 型の要素が String 型に変換されてしまいます。
見た目は日付でも、内部的には文字列となるため、後続処理でエラーや想定外の挙動を引き起こします。
「配列の形を変えるだけで、要素の型は変えたくない」という要件に対して、TransposeN1toArray1D は安全に利用できる実装となっています。
<関連コード>
今回の汎用プロシージャは、下記の別で紹介している汎用プロシージャを使用しています。
・IsArray2D → https://www.softex-celware.com/post/isarray1d
・IsArray2DStart1 → https://www.softex-celware.com/post/isarray1d
<関連記事>
今回紹介しているような汎用プロシージャを部品として一元管理する方法は別記事で紹介していますので、是非このノウハウも参考にしてみてください。
コーディングを効率化する上でどんどん増やしていった汎用プロシージャ(部品)をいくら増やしても簡単に流用ができるような仕組みの構築が可能になります。



