「複数列に分散した月次データをまとめて縦1列のリストにしたい」「マトリクス表を横1行に展開して別の集計に渡したい」——こうした場面では従来、作業列の追加・VBAマクロ・SUMPRODUCT+INDEX等の複雑な手順が必要でした。Excel 365にはTOCOL関数(配列を1列に変換)とTOROW関数(配列を1行に変換)が追加されており、これらの操作が1つの数式で完結します。
両関数の大きな強みは空白セルとエラー値を変換時に自動除外できる点です。入力漏れのあるアンケート結果の1列化・VLOOKUP結果の#N/A混じりリストの整形・複数シート縦積みデータのクレンジングなど、データ整形のコストを大幅に削減します。
本記事では、TOCOL・TOROW関数の基本構文・ignoreパラメーターの使い分け・scan_by_columnの切替・実務ユースケース別パターン・よくあるエラーの対処法・FILTER/UNIQUE/SORT/VSTACKとの組み合わせ・MOS Excel 365 エキスパート(MO-211)との関連を体系的に解説します。
TOCOL関数の基本構文
TOCOL(To Column)は配列またはセル範囲を縦1列に展開する関数です。スピル(自動展開)で結果を出力するため、数式を入力したセルの下方向に値が並びます。
=TOCOL(配列, [ignore], [scan_by_column])
| 引数 | 説明 | 省略 |
|---|---|---|
| 配列 | 1列に変換したい配列またはセル範囲 | 必須 |
| ignore | 0=除外しない(既定)/ 1=空白を除外 / 2=エラーを除外 / 3=空白とエラーを両方除外 | 省略可(0扱い) |
| scan_by_column | FALSE(既定)=行方向にスキャン / TRUE=列方向にスキャン | 省略可(FALSE扱い) |
基本例:A1:C3(3行3列、計9セル)を縦1列(9行1列)に変換するには次のように書きます。
=TOCOL(A1:C3)
既定では左端の列から右端の列へ、上から下へスキャンします(scan_by_column=FALSE)。A1:C3ならA1→B1→C1→A2→B2→C2→A3→B3→C3の順に縦へ並びます。
scan_by_column=TRUEにした場合は列方向優先(A1→A2→A3→B1→B2→B3→C1→C2→C3の順)になります。元データの構造に合わせて切り替えてください。
TOROW関数の基本構文
TOROW(To Row)は配列またはセル範囲を横1行に展開する関数です。構文はTOCOLとまったく同じ形で、出力の向きだけが異なります。
=TOROW(配列, [ignore], [scan_by_column])
| 引数 | 説明 | 省略 |
|---|---|---|
| 配列 | 1行に変換したい配列またはセル範囲 | 必須 |
| ignore | 0=除外しない / 1=空白を除外 / 2=エラーを除外 / 3=空白とエラーを両方除外 | 省略可(0扱い) |
| scan_by_column | FALSE(既定)=行方向にスキャン / TRUE=列方向にスキャン | 省略可(FALSE扱い) |
3行3列の範囲を引数に渡した場合、TOCOLは9行1列のスピル結果を生成し、TOROWは1行9列のスピル結果を生成します。スピル先(下方向または右方向)のセルが空でないと#SPILL!エラーになるため、スペースを確保してから数式を入力してください。
ignoreパラメーターで空白・エラーを除外する
TOCOL・TOROWの真価はignoreパラメーターにあります。実務データには入力漏れによる空白や、VLOOKUPが返す#N/Aなどのエラー値が混在することが多く、それらをそのまま1列化すると後続の集計が崩れます。ignoreを使えば変換と除外を1つの引数で完結できます。
| ignore値 | 動作 | 主な使用場面 |
|---|---|---|
| 0(省略時) | 空白もエラーもそのまま含める | 元データに空白・エラーがない整理済みデータ |
| 1 | 空白セルを除外する | 入力漏れのあるアンケート集計・間引き入力の表 |
| 2 | エラー値(#N/A・#VALUE!等)を除外する | VLOOKUPの結果に#N/Aが混在している場合 |
| 3 | 空白とエラーを両方除外する | 未入力セルとエラーが混在する生データの整形 |
例:A1:C10の範囲に空白セルとエラー値が混在している場合、有効な値だけを縦1列に取り出すには次のように書きます。
=TOCOL(A1:C10, 3)
ignore=3(空白&エラー両方除外)を指定すると、元の範囲から値が入っているセルだけが詰めて縦に並びます。従来はIFERROR・IF(A1=””…)・FILTER等を組み合わせていた処理を1式に圧縮できます。
実務ユースケース別パターン
ケース1:複数列の月次売上リストを縦1列に統合する
1月・2月・3月の売上データがそれぞれA列・B列・C列に入力されている場合、TOCOLで縦1列のマスターリストが1式で作れます。
=TOCOL(A2:C13, 1)
ignore=1(空白除外)を指定することで、月によって入力行数が異なっていても穴あきなしの連続リストが生成されます。このリストをSUMやAVERAGEの引数に渡すと3か月合計・平均を1式で算出できます。
ケース2:マトリクス表を連続データに変換してグラフ化する
担当者×商品の掛け算クロス集計表(例:5行×4列)はそのままでは棒グラフの系列データとして扱いにくい形です。TOCOLで縦1列に変換すると、FILTERやUNIQUEと組み合わせて動的グラフの参照範囲として利用できます。
=TOCOL(B2:E6, 0, TRUE)
scan_by_column=TRUEにすると、列(商品)ごとに縦に並ぶ順序に変換できます。データの持ち方や次工程の集計軸に合わせてFALSE/TRUEを選んでください。
ケース3:複数シートの同一構造リストを縦積みしてから1列化する
月ごとのシートに同じ列構造のデータが入っている場合、VSTACKで縦積みしてからTOCOLに渡す方法が有効です。
=TOCOL(VSTACK(Sheet1!A2:A100, Sheet2!A2:A100, Sheet3!A2:A100), 1)
VSTACKで3シートのA列を縦積みし、TOCOLのignore=1(空白除外)で穴を詰めます。シートを追加してもVSTAKの引数を1つ増やすだけで集計対象を拡張でき、数式の構造は変わりません。
ケース4:TOROWで分散しているヘッダーを1行の選択肢にまとめる
入力規則のリストとして使いたい見出しが複数の離れた列に分散している場合、TOROWで1行に整列してから参照させられます。CHOOSE関数で非連続セルを配列にまとめてTOROWに渡す方法が簡潔です。
=TOROW(CHOOSE({1,2,3}, A1, C1, E1))
CHOOSEで非連続セルをまとめた配列を作り、TOROWで1行に整列します。スピル結果のセル範囲(例:G1#)を入力規則の参照先に指定すると、元セルの値が変わるたびに選択肢が自動で更新される動的な入力規則になります。
FILTER・UNIQUE・SORTとの組み合わせパターン
TOCOL・TOROWは単独でも強力ですが、動的配列関数群と組み合わせることで真価を発揮します。
| 組み合わせ | 実現できること |
|---|---|
| TOCOL + UNIQUE | 2次元範囲から重複を取り除いた1列リストを生成する |
| TOCOL + SORT | 2次元範囲を1列化しつつ昇順・降順で並べ替える |
| TOCOL + FILTER | 2次元範囲から条件に合う値だけを抽出して1列にする |
| TOROW + VSTACK | 複数のTOROW結果を縦に積み上げて行列を再構成する |
| TOCOL + UNIQUE + SORT | 空白・重複を除いた昇順マスターリストを自動生成する |
実例:部署別スキルマップから保有スキルの重複なし・昇順1列リストを生成する
スキル一覧がB2:F20のマトリクス形式で入力されており、空白が多い場合、次の数式で入力規則用マスターリストを自動生成できます。
=SORT(UNIQUE(TOCOL(B2:F20, 1)))
処理の流れは①TOCOL(空白除外で1列化)→②UNIQUE(重複削除)→③SORT(昇順整列)の3段です。マトリクス形式のスキルシートから入力規則用マスターリストが1式で完成し、データを追加するたびに自動更新されます。
よくあるエラーと対処法
| エラー | 原因 | 対処法 |
|---|---|---|
| #NAME? | ExcelのバージョンがTOCOL/TOROWに未対応(Excel 2019以前・旧Office 365ビルド) | Microsoft 365を最新ビルドに更新する(ビルド2202以降が必要) |
| #SPILL! | スピル先のセルに値・書式が残っている | スピル結果が展開される右方向または下方向のセルをすべて空にする |
| #VALUE! | 配列引数が正しく渡されていない(数式の記述ミス等) | 引数がセル範囲または配列定数になっているか確認する |
| 結果に0が大量に表示される | ignore=0(既定)で空白セルが0に変換されている | ignore=1を指定して空白を除外する |
| 順序が意図と違う | scan_by_columnの設定が元データの並び方と合っていない | FALSE(行方向スキャン)とTRUE(列方向スキャン)を切り替える |
バージョン確認の方法:[ファイル]→[アカウント]→[Officeの情報]でビルド番号を確認します。TOCOL・TOROWは2022年2月のOffice更新(ビルド2202以降)で追加されました。バージョンが古い場合はWindowsUpdateまたはOfficeの更新を実行してください。
TOCOLとTOROWの使い分けポイント
TOCOLとTOROWの選択は次の工程で何を必要とするかで決まります。
| 使用する関数 | 出力の向き | 次工程での使用例 |
|---|---|---|
| TOCOL | 縦(1列) | SUM・AVERAGEへの引数として渡す / UNIQUE・SORT・FILTERとネスト / 入力規則の縦リスト |
| TOROW | 横(1行) | 水平方向の集計行として使う / ダッシュボードのヘッダー行 / VSTACK後の行ラベル構成 |
「縦に並べて集計・抽出したい」ならTOCOL、「横に並べて比較表のヘッダーや集計行にしたい」ならTOROWと覚えると迷いません。どちらの関数もignoreとscan_by_columnは共通の引数仕様です。
MOS Excel 365 エキスパート(MO-211)との関係
TOCOL・TOROWはMOS Excel 365 エキスパート(MO-211)の出題領域「高度な機能を使用した数式およびマクロの作成」に関連する動的配列関数群の一部です。分野別の出題数・配点は公表されていません。
MO-211対策では、FILTER・UNIQUE・SORT・SORTBY・SEQUENCE・RANDARRAY・VSTACK・HSTACKなどの動的配列関数群とTOCOL・TOROWの連携パターンをセットで理解しておくことが重要です。スピルの仕組み(#記号によるスピル範囲参照・@記号による暗黙的交差の解除)も合わせて習得すると応用範囲が広がります。
一般レベル(MO-210)はTOCOL・TOROWを含む高度な動的配列関数の操作は出題範囲外です。一般レベル合格後にエキスパートを目指す方は、動的配列全体を体系的に学習する計画を立ててください。MOS試験の試験時間は50分・採点は1000点満点で、合格点は非公開ですが550点~850点が目安とされています。
エキスパート(MO-211)の学習時間の目安(当サイトハウス基準)は、アソシエイト(MO-210)合格後に追加で60~100時間です。1日1時間のペースで約2か月~3か月が目安となります。受験料については改定される実績があるため、最新の金額は公式サイトの「受験料・価格」(https://mos.odyssey-com.co.jp/exam/examfee.html)でご確認ください。
まとめ:TOCOL・TOROW操作チェックリスト
- □ TOCOL・TOROWはOffice 365ビルド2202以降で利用できることを確認した
- □ TOCOLで縦1列・TOROWで横1行に変換できる
- □ ignore=0(除外なし)・1(空白除外)・2(エラー除外)・3(両方除外)を使い分けられる
- □ scan_by_column=FALSE(行方向スキャン)とTRUE(列方向スキャン)の違いを理解した
- □ #SPILL!エラーはスピル先のセルを空にすることで解消できる
- □ #NAME?エラーはExcelバージョンの確認・更新で対応できる
- □ VSTACKと組み合わせて複数シートのデータを縦積み&1列化できる
- □ UNIQUE・SORT・FILTERとネストして重複排除・並べ替え・条件抽出を1式で完結できる
- □ MO-211(エキスパート)の「高度な機能を使用した数式」領域に関連することを理解した
PR
TOCOL・TOROWを含むExcel 365の新関数を豊富な操作画面で丁寧に解説。関数の引数の意味と動作の流れを視覚的に確認しながら学べるため、試験対策と実務活用の両面を同時に進めたい方に最適な1冊です。
PR
たった1秒で仕事が片づくExcel自動化の教科書【改訂第3版】
動的配列関数・TOCOL・VSTACKを活用した業務自動化のアイデアが豊富に収録されています。「配列変換+集計を組み合わせて1式で業務処理を完結させる」発想を実務で鍛えたい方に向いた実践書です。
Excel・MOS試験対策の関連記事
当サイトでは、MOS Excel 365 エキスパート(MO-211)・一般レベル(MO-210)の出題領域に沿ったExcel関数・操作の解説記事を随時公開しています。TOCOL・TOROWと連携するFILTER・UNIQUE・SORT・VSTACK・HSTACKの解説記事もあわせてご覧ください。
