ExcelでTOCOLとTOROWを使って2次元配列を1列・1行に変換する

TOCOLとTOROWはExcelの動的配列関数で、2次元の範囲を1列または1行の1次元配列に変換します。引数で空白やエラーを無視したり、行単位/列単位で走査順を切り替えたりできます。VSTACK/HSTACKやUNIQUE/SORTと組み合わせると、複数の範囲の結合、重複排除、並べ替えが簡単になります。
ジャンプリンク
TOCOL関数:2次元配列を1列に変換する方法
TOROW関数:2次元配列を1行に変換する方法
複数の配列を1列/1行にまとめる方法
一意でソート済みの1列に変換する方法
2次元配列(複数の行と列)を1列または1行に整形すると、データのフィルター、ソート、集計が簡単になります。ここではExcelのTOCOLとTOROWに焦点を当て、使い方、引数の意味、実務での応用、よくある落とし穴、代替手法、作業チェックリスト、テンプレートまで詳しく解説します。
注:これらの関数はExcel 2024以降、Microsoft 365、Excel for the web、モバイルアプリで利用できます。
TOCOL関数:2次元配列を1列に変換する方法
名称のとおり、TOCOLは複数行・複数列の配列を1つの縦方向(列)の配列に変換します。基本構文は次のとおりです:
=TOCOL(*a*,[*b*],[*c*])- a(必須):列として返す対象の配列(範囲)。
- b(省略可):結果で無視する値の種類を指定(空白、エラーなど)。
- c(省略可):配列を列単位に走査するか行単位に走査するかを指定するフラグ。
bを省略するとソース配列のすべての値が返ります。値の意味は以下のとおりです:
- 1:空白を無視
- 2:エラーを無視
- 3:空白とエラーの両方を無視
cを省略すると行単位(左から右)に走査します。TRUEにすると列単位(上から下)に走査します。
実務例:小売りのチェーンで、列に店舗種別、行に国、重複するセルにマネージャー名があるような表を想定します。

セルB2からF17にあるマネージャー名の配列を単一の列にしたい場合、最も単純な方法は次のとおりです。空白セルに入力して、配列を選択してからEnterを押します。
=TOCOL(配列選択後、閉じてEnter:
=TOCOL(B2:F17)結果は動的配列としてスピルし、元データの変更を反映します。ただし、動的配列はExcelテーブルと互換性がない点に注意してください。1Dリストをテーブルとして固定したい場合は、結果範囲をコピーして値として貼り付ける必要があります(Ctrl+C、Ctrl+Shift+V)。この操作後は元データとのリンクが切れます。
bを省略したため、空白はゼロで表示され、エラーもそのまま返ります。cを省略したため、1行目(左から右)の順で値が並び、その後2行目が続きます。重複値もそのまま返ります。
空白とエラーを除外したい場合はbに3を指定します:
=TOCOL(B2:F17,3)列単位で上から下に読みたい場合はcにTRUEを指定します:
=TOCOL(B2:F17,3,TRUE)これで、左端の列を上から下へ、次に右隣の列を上から下へ、という順で値が並びます。
実務ヒント
- 元の範囲に式や出力が被らないように、十分な空きセルを確保してください。
- 動的配列がエラーを吐く場合、#SPILL!(スピルエラー)の原因を確認します(出力先に既存の値がある、保護されたシートなど)。
TOROW関数:2次元配列を1行に変換する方法
TOROWはTOCOLの水平版で、2次元配列を1つの横方向(行)の配列に変換します。構文はTOCOLと同様です:
=TOROW(*a*,[*b*],[*c*])- a(必須):行として返す対象の配列(範囲)。
- b(省略可):無視する値の種類(1,2,3)。
- c(省略可):TRUEで列走査、未指定で行走査。
同じデータセットで、すべてのマネージャー名を1行で横方向に並べ、各列の下に従業員名を入れたい場合:
=TOROW(B2:F17)空白やエラーを無視したい場合はbに3を、列単位で走査したい場合はcにTRUEを付けます:
=TOROW(B2:F17,3,TRUE)結果を静的にするにはコピーして値として貼り付けます。
複数の配列を1列または1行にまとめる方法
TOCOLやTOROWは単独で1つの範囲しか扱えませんが、VSTACK(縦に積む)やHSTACK(横に並べる)と組み合わせることで複数範囲を一度にまとめられます。
例:ヨーロッパとアジアの2つの範囲を1列にまとめる場合(TOCOLで説明):
まずVSTACKで上に積むと、ヨーロッパの全行が先に、その後にアジアの全行が来ます:
=VSTACK(B2:F17,B20:F35)これをTOCOLで包んで一意かつ空白除外にするには:
=TOCOL(VSTACK(B2:F17,B20:F35),3)一方、HSTACKで横に並べてからTOCOLを使うと、同じ列位置の項目をまとめて取得できます:
=TOCOL(HSTACK(B2:F17,B20:F35),3)同様の考え方はTOROWにも適用可能です。
UNIQUEとSORTと組み合わせて一意でソート済みの1列を作る
TOCOL/TOROWはUNIQUEやSORTとネストすると非常に強力です。例えば、過去数年分の競技で金メダリストの名前が入った2次元配列を1列にして重複を除き、アルファベット順に並べたいとします。
まずTOCOLで1列に変換:
=TOCOL(B2:F17)重複を取り除く:
=UNIQUE(TOCOL(B2:F17))並べ替える:
=SORT(UNIQUE(TOCOL(B2:F17)))逆順で並べたい場合はSORTの第3引数に-1を指定します:
=SORT(UNIQUE(TOCOL(B2:F17)),,-1)TOROWを使う場合、UNIQUEの方向引数やSORTの並べ替え方向にTRUEを指定するなど、引数の位置が少し異なる点に注意してください:
=SORT(UNIQUE(TOROW(B2:F17),TRUE),,,TRUE)
よくある失敗と回避策
- 出力先に既存データがあると#SPILL!が発生します。出力先セルの周辺を確認し、不要な値を削除してください。
- 結果がテーブルとして扱いたい場合、直接テーブルにスピルさせることはできません。値で貼り付けてからテーブルに変換してください。
- 古いExcel(2021以前や非Microsoft 365)では利用できないため、共同作業者が古いバージョンを使っている場合は互換性を確認してください。
- 関数名は英語(TOCOL/TOROW)です。ローカライズされたExcelでも英語名が有効でない場合があるため、関数が見つからないときはローカライズ版のヘルプを確認してください。
代替手法と使い分け
- TRANSPOSE:小規模な行列の行列転置に使う。ただし列→行に変換するだけで、配列を1次元に潰す用途とは異なる。
- ピボットテーブル:集計や要約を目的とする場合に有効。単純に1列/1行に並べる用途にはオーバーヘッドが大きい。
- Power Query:複数シートや外部データを結合してクリーンな1列を作る場合に最も再現性が高い。ETLの標準フローを組むならPower Queryが有利。
- マクロ/VBA:特殊な整形や大量データを高速に処理する必要がある場合はVBAやOfficeスクリプトを検討。
選択基準の簡易メンタルモデル:
- 簡単で即席、動的に反映したい → TOCOL/TOROW
- 複数ソースを定期的に統合し品質管理したい → Power Query
- 集計・集約が目的 → ピボット
- 自動化/カスタム処理 → マクロ/Officeスクリプト
事実ボックス(主要ポイント)
- 必要なExcelバージョン:Excel 2024以降、Microsoft 365、Excel for web、モバイルアプリ。
- 主な引数:b(無視オプション:1,2,3)、c(走査方向:TRUE=列単位)。
- 結果は動的配列でスピルする。
- テーブルと組み合わせられないため、最終的に静的にするには値貼り付けが必要。
役割別チェックリスト
データアナリスト:
- 元データに欠損やエラーがないか確認する。
- TOCOL/TOROWとUNIQUE/SORTで一意化と整列を行う。
- 必要ならVSTACK/HSTACKで複数範囲を結合。
レポート作成者:
- 出力先がスピル可能か確認する。
- テーブル化が必要ならコピー→値貼り付け→テーブル変換を行う。
プロダクトオーナー/マネージャー:
- チームメンバーが使用するExcelバージョンを確認する。
- 再現性が求められる場合はPower Queryやスクリプトの採用を検討する。
テンプレート:クイックリファレンス
- すべてを1列にして空白とエラーを除外:
=TOCOL(範囲,3)- 列単位で走査して1列にする:
=TOCOL(範囲,3,TRUE)- 複数範囲を縦に結合して一意化:
=UNIQUE(TOCOL(VSTACK(範囲1,範囲2),3))- 複数範囲を横に結合して1行にする(空白除外):
=TOROW(HSTACK(範囲1,範囲2),3)互換性と移行のヒント
共同作業者に古いExcelを使う人がいる場合:
- 互換性の問題が懸念されるなら、最終出力をCSVや値貼り付けで共有する。
- またはPower Queryを使ってETLを組み、古いExcelでも扱いやすい形式で配布する。
モバイル/タブレットでの閲覧:
- 閲覧は可能ですが、編集時のUI制約(画面サイズ、セル選択など)に注意。
実践的なチェックリスト(導入時)
- 使用する全ユーザーのExcelバージョンを把握する。
- 入力データの欠損とエラーを洗い出す。
- 出力セルのスピル領域を確保する。
- 必要に応じてUNIQUE/SORT/VSTACK/HSTACKを組み合わせる。
- 静的出力が必要な場合は値貼り付けを行う。
パターン別の例と期待結果
単純な商品名の一覧化:TOCOLでOK。空白やエラーがある場合はb=3。
複数国の営業担当をまとめて重複を排除:VSTACK→TOCOL→UNIQUE→SORT。
見出し付きで列名を横に並べたい:TOROWを使用してヘッダー行を作成。
定期的に集計を更新したい:Power Queryで処理フローを作るとメンテが楽。
小さな検証テスト(受け入れ基準)
- 入力:3x3の配列に空白と”#N/A”エラーを混在させる。
- 期待結果:=TOCOL(範囲,3) は空白とエラーを除外した1列のリストを返す。
- 期待結果:=TOROW(範囲,1) は空白を除外した1行のリストを返す。
よくある具体的な応用例(現場でのシナリオ)
- マーケティング:キャンペーン別・国別に得られたリード名を1列にして重複排除→CRMにインポート。VSTACK+TOCOL+UNIQUE。
- 人事:部門ごとに分かれた研修受講者リストを1列で集約し、参加者一覧を生成。
- アスリート管理:大会ごとのメダリスト名を1列にまとめ、重複を除いて名簿を作成(前述の例)。
セキュリティとプライバシーの注意点
- 個人情報を含む一覧を作成する際は、アクセス権限と共有範囲を確認してください。
- 共有する場合は最小限の情報にマスキングするか、値として出力して意図しないスピルを防止してください。

Microsoft 365の製品イメージ
Microsoft 365 Personal
対応OS
Windows、MacOS、iPhone、iPad、Android
無料体験
1か月
Microsoft 365にはWord、Excel、PowerPointなどのOfficeアプリ(最大5台)と1TBのOneDriveが含まれます。購入価格は販売チャネルにより異なります。
まとめ
TOCOLとTOROWは2次元のデータを1次元に整形するための単純かつ強力な関数です。VSTACK/HSTACK、UNIQUE、SORTと組み合わせれば、データ統合や重複排除、並べ替えがほぼノーコードで実現できます。用途やチームのExcelバージョンに応じてPower Queryやマクロを補助的に使うと運用が安定します。
重要:動的配列の特性(スピル)とExcelテーブルとの非互換、使用可能なExcelバージョンを理解してから導入してください。
FAQ
Q: TOCOLとTOROWの出力をテーブルに変換できますか?
A: 直接スピルされた結果をテーブルに変換することはできません。出力を選択してコピーし、値として貼り付けてからテーブルに変換してください。
Q: 古いExcelでもファイルを開くユーザーがいる場合、どうすればいいですか?
A: 最終出力をCSVや値貼り付けで共有するか、Power Queryを使って互換性のある形式に整形して配布してください。
Q: TOCOL/TOROWでスピル領域が足りない場合の原因は?
A: 出力先に既存データがある、シートが保護されている、または列数/行数が極端に大きいなどが考えられます。出力先を空けるか、分割して処理してください。