テクノロジーガイド

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

2 min read Excel 更新されました 16 Sep 2025
Excelで2D配列を1列/1行に変換する
Excelで2D配列を1列/1行に変換する

Microsoft Excelのスプレッドシート:TOROWとTOCOL関数の例、Excelロゴ付き

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にすると列単位(上から下)に走査します。

実務例:小売りのチェーンで、列に店舗種別、行に国、重複するセルにマネージャー名があるような表を想定します。

店舗種別が列A、年が行1、交差セルにマネージャー名が入ったExcelワークシートの範囲

セル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)

金メダリストと年・種目が入ったExcelの範囲

よくある失敗と回避策

  • 出力先に既存データがあると#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を組み合わせる。
  • 静的出力が必要な場合は値貼り付けを行う。

パターン別の例と期待結果

  1. 単純な商品名の一覧化:TOCOLでOK。空白やエラーがある場合はb=3。

  2. 複数国の営業担当をまとめて重複を排除:VSTACK→TOCOL→UNIQUE→SORT。

  3. 見出し付きで列名を横に並べたい:TOROWを使用してヘッダー行を作成。

  4. 定期的に集計を更新したい: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: 出力先に既存データがある、シートが保護されている、または列数/行数が極端に大きいなどが考えられます。出力先を空けるか、分割して処理してください。

共有する: X/Twitter Facebook LinkedIn Telegram
著者
編集

類似の素材

Debian 11 に Podman をインストールして使う
コンテナ

Debian 11 に Podman をインストールして使う

Apt-pinning入門:Debianで複数リポジトリを管理
Linux

Apt-pinning入門:Debianで複数リポジトリを管理

OptiScalerでFSR 4を全対応ゲームに導入する方法
ゲーム

OptiScalerでFSR 4を全対応ゲームに導入する方法

Dansguardian と Squid(NTLM)を Debian Etch に導入する方法
ネットワーク

Dansguardian と Squid(NTLM)を Debian Etch に導入する方法

AndroidでSDカードのインストールエラーを修正する方法
トラブルシューティング

AndroidでSDカードのインストールエラーを修正する方法

KNetAttach と KDE の remote:/ でネットワークフォルダーを設定
Linux ネットワーク

KNetAttach と KDE の remote:/ でネットワークフォルダーを設定