Excelで複数行・複数列にまたがるデータを、横1行にまとめたいことってありますよね。手動でコピー&ペーストしていると時間がかかりますし、元データが変わるたびにやり直しです。
TOROW関数を使えば、2次元の範囲を数式ひとつで横1行に変換できます。空白やエラーの除外もオプションひとつで設定できるので、データ整理が一気にスムーズになりますよ。
この記事では、TOROW関数の引数の意味から使い方を解説します。TOCOL関数・TRANSPOSE関数との違い、よくあるエラーの対処法もあわせて紹介しますよ。
ExcelのTOROW関数とは?
読み方と基本概念
TOROW関数(読み方: トゥロウ関数)は、2次元のセル範囲や配列を横1行の配列に変換する関数です。「to row(行にする)」が名前の由来になっています。
たとえば、3行x4列の表を横1行x12列に変換できます。元データと数式でつながっているため、元データを変更すると変換結果も自動で更新されますよ。
TOROW関数にできることをまとめると、次のとおりです。
- 2次元のセル範囲を横1行に変換する
- 空白セルやエラー値を除外して変換できる
- 読み取り順序を行方向・列方向で切り替えられる
- 他の関数と組み合わせてデータ整理を効率化できる
使えるバージョン
TOROW関数は比較的新しい関数です。使えるバージョンは限られているので、事前に確認しておきましょう。
| バージョン | 対応状況 |
|---|---|
| Microsoft 365 | 対応 |
| Excel 2024 | 対応 |
| Excel for the web | 対応 |
| Excel 2021 | 非対応 |
| Excel 2019以前 | 非対応 |
Excel 2021以前のバージョンでは #NAME? エラーになります。職場のExcelバージョンが対応しているか、先に確認してくださいね。
TOROW関数の引数を丁寧に解説
まずはTOROW関数の構文を確認しましょう。
=TOROW(配列, [無視], [scan_by_column])
引数は3つありますが、必須なのは第1引数の「配列」だけです。第2・第3引数は省略できます。
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 配列 | 必須 | 1行に変換したいセル範囲または配列 |
| 無視 | 任意 | 除外する値の種類を指定する(0〜3) |
| scan_by_column | 任意 | 読み取り方向を指定する(FALSE/TRUE) |
第1引数「配列」
「配列」には、横1行に変換したいセル範囲を指定します。B2:D5 のようなセル範囲のほか、他の関数の結果(配列)を渡すこともできます。
=TOROW(B2:D5)
指定した範囲のすべてのセルが、横1行に展開されます。
第2引数「無視」(0/1/2/3)
第2引数では、変換時に除外する値の種類を数値で指定します。省略すると0(すべて保持)になります。
| 値 | 動作 |
|---|---|
| 0(省略時) | すべての値を保持する |
| 1 | 空白セルを除外する |
| 2 | エラー値を除外する |
| 3 | 空白セルとエラー値の両方を除外する |
データに歯抜けやエラーが混ざっている場合は、1や3を指定するとクリーンな結果を取得できます。特に3を指定すると空白とエラーをまとめて除外できるので便利ですよ。
第3引数「scan_by_column」(行順vs列順)
第3引数では、2次元データをどの順番で読み取るかを指定します。省略するとFALSE(行方向)になります。
| 値 | 読み取り順序 | 説明 |
|---|---|---|
| FALSE(省略時) | 行方向 | 1行目を左から右へ → 2行目を左から右へ → … |
| TRUE | 列方向 | 1列目を上から下へ → 2列目を上から下へ → … |
たとえば以下の2行x2列のデータを変換する場合です。
| A列 | B列 | |
|---|---|---|
| 1行目 | A | B |
| 2行目 | 1 | 2 |
- FALSE(行方向): A → B → 1 → 2
- TRUE(列方向): A → 1 → B → 2
並び順が結果に影響するので、用途に合わせて切り替えてください。
TOROW関数の使用例(基本から応用まで)
基本:セル範囲を横1行に変換
月別・拠点別の売上データを横1行に変換してみましょう。
B2:D4に以下のデータが入っているとします。
| B | C | D | |
|---|---|---|---|
| 1 | 4月 | 5月 | 6月 |
| 2 | 100 | 120 | 110 |
| 3 | 80 | 90 | 85 |
| 4 | 60 | 70 | 65 |
数値部分(B2:D4)を横1行に変換します。出力先のセルに以下の数式を入力してください。
=TOROW(B2:D4)
行方向に読み取られ、結果は次のように横1行に並びます。
| 100 | 120 | 110 | 80 | 90 | 85 | 60 | 70 | 65 |
1行目の100→120→110、2行目の80→90→85、3行目の60→70→65という順番で展開されていますね。
空白セルを除外して変換(ignore=1)
データに空白セルが含まれている場合は、第2引数に1を指定しましょう。
たとえば、C3が空白だったとします。
| B | C | D | |
|---|---|---|---|
| 2 | 100 | 120 | 110 |
| 3 | 80 | 85 | |
| 4 | 60 | 70 | 65 |
=TOROW(B2:D4, 1)
空白セルがスキップされ、値のあるセルだけが横1行に並びます。結果は8個の値になります。
| 100 | 120 | 110 | 80 | 85 | 60 | 70 | 65 |
歯抜けのデータを詰めて並べたいときに重宝しますよ。
列方向スキャンで並び順を変える(scan_by_column=TRUE)
第3引数にTRUEを指定すると、列方向に読み取ります。
=TOROW(B2:D4, 0, TRUE)
| 100 | 80 | 60 | 120 | 90 | 70 | 110 | 85 | 65 |
今度は列方向に読み取られています。B列の100→80→60、C列の120→90→70、D列の110→85→65という順番です。
「拠点ごとにまとめたい」なら行方向(FALSE)、「月ごとにまとめたい」なら列方向(TRUE)と使い分けてください。
TOCOL・TRANSPOSEとの違い
TOROW vs TOCOL
TOCOL関数は、TOROW関数のペアとなる関数です。違いは出力の方向だけで、引数の構造はまったく同じです。
- TOROW関数: 横1行に変換する(右方向にスピル)
- TOCOL関数: 縦1列に変換する(下方向にスピル)
引数を変えずに関数名を入れ替えるだけで、出力方向を切り替えられます。
TOROW vs TRANSPOSE
TRANSPOSE関数は、行と列を入れ替える(転置する)関数です。TOROW関数との大きな違いは、データの「形」が変わるかどうかです。
- TOROW関数: 2次元データを1次元(横1行)にフラット化する
- TRANSPOSE関数: 2次元の形を維持したまま行と列を入れ替える
たとえば3行x2列のデータに対して、TOROW関数は1行x6列に変換します。TRANSPOSE関数は2行x3列に変換します。目的がまったく異なる関数ですね。
比較表
| 比較項目 | TOROW関数 | TOCOL関数 | TRANSPOSE関数 |
|---|---|---|---|
| 出力形状 | 横1行(1次元) | 縦1列(1次元) | 行列転置(2次元) |
| 空白・エラー除外 | できる | できる | できない |
| スキャン方向の指定 | できる | できる | できない |
| 構文 | =TOROW(配列, [無視], [scan]) | =TOCOL(配列, [無視], [scan]) | =TRANSPOSE(配列) |
| 主な用途 | データを横1行に展開 | データを縦1列に展開 | 行と列の入れ替え |
データをフラット化したいならTOROW関数またはTOCOL関数、行列の向きを変えたいならTRANSPOSE関数、と覚えておけば迷いません。
他の関数との組み合わせ活用
TOROW関数は単体でも便利ですが、他の関数と組み合わせると活用の幅がさらに広がります。
UNIQUE + TOROW
UNIQUE関数(重複を除外する関数)と組み合わせると、複数列に散らばったデータから重複なしの横1行リストを作れます。
たとえばB2:D5に担当者名が入っている場合です。
=UNIQUE(TOROW(B2:D5, 1))
TOROW関数で全担当者を横1行にまとめてから、UNIQUE関数で重複を除外しています。横方向のユニークリストが必要な場面で活躍します。
FILTER + TOROW
FILTER関数(条件に合うデータを抽出する関数)の結果をTOROW関数で横1行に展開するパターンです。
=TOROW(FILTER(B2:D10, A2:A10="営業"), 1)
FILTER関数で営業部のデータだけを抽出し、TOROW関数で横1行にまとめています。条件抽出の結果をフラットに並べたいときに使えます。
ただし、FILTER関数の結果が空(条件に合うデータがない)の場合は #CALC! エラーになります。データが空になる可能性があるときは、IFERROR関数で囲んでおくと安心です。
=IFERROR(TOROW(FILTER(B2:D10, A2:A10="営業"), 1), "該当なし")
HSTACK + TOROW
HSTACK関数(複数の範囲を横方向に結合する関数)と組み合わせると、離れた複数の範囲をまとめて横1行に変換できます。
=TOROW(HSTACK(B2:C5, E2:F5))
HSTACK関数で2つの範囲を横方向に結合してから、TOROW関数で横1行にフラット化しています。離れた範囲のデータを統合したいときに便利ですよ。
同じことを縦方向で結合するなら、VSTACK関数を使います。
=TOROW(VSTACK(B2:D3, B6:D7))
SORT + TOROW:横1行に変換してから並べ替える
SORT関数(データを並べ替える関数)と組み合わせると、並べ替えた結果を横1行に展開できます。売上ランキングの表示にぴったりのパターンですよ。
たとえば、A2:A6に商品名、B2:B6に売上が入っているとします。
| A | B | |
|---|---|---|
| 2 | 商品A | 120 |
| 3 | 商品B | 350 |
| 4 | 商品C | 80 |
| 5 | 商品D | 210 |
| 6 | 商品E | 290 |
売上の高い順に並べ替えてから、横1行で表示してみましょう。
=TOROW(SORT(B2:B6, 1, -1))
SORT関数の第3引数に-1を指定すると降順(大きい順)になります。並べ替えた売上が横1行に展開され、ランキングが完成します。
| 350 | 290 | 210 | 120 | 80 |
商品名もセットで横1行に並べたい場合は、HSTACK関数で商品名と売上を結合してから渡します。
=TOROW(SORT(HSTACK(A2:A6, B2:B6), 2, -1))
SORT関数の第2引数(並べ替えの基準列)に2を指定して、2列目の売上を基準に降順で並べ替えています。「商品名→売上→商品名→売上…」の順で横1行に並ぶので、ダッシュボード上部に売上ランキングをコンパクトに表示したいときなどに重宝しますよ。
よくあるエラーと対処法
TOROW関数を使っていて遭遇しやすいエラーをまとめました。
| エラー | 原因 | 対処法 |
|---|---|---|
#SPILL! | スピル先のセルにデータがある | 出力先の横方向のセルを空にしてください |
#NAME? | 非対応バージョンで使用した | Microsoft 365・Excel 2024以降にアップグレードしてください |
#NUM! | 配列が大きすぎる | 変換対象の範囲を小さくしてください |
#CALC! | FILTER関数との組み合わせで空集合になった | IFERROR関数でエラー時の代替値を指定してください |
#SPILL!
TOROW関数はスピル機能を使って結果を横方向に展開します。展開先のセルに値や数式が入っていると #SPILL! エラーが発生します。
対処法はシンプルで、スピル先の横方向のセルを空にするだけです。結果が何セル分展開されるかを事前に確認して、十分な空きスペースを確保しておきましょう。
#NAME?
#NAME? エラーが出る場合、Excel 2021以前のバージョンを使っている可能性が高いです。TOROW関数はMicrosoft 365またはExcel 2024以降でないと使えません。
関数名のスペルミスでも #NAME? になります。「TOROW」のつづりが正しいか、まず確認してくださいね。
バージョンの都合で使えない場合は、TRANSPOSE関数とINDEX関数の組み合わせで代替できます。ただし数式が複雑になるので、バージョンアップがおすすめです。
#NUM!
変換対象の配列が大きすぎると #NUM! エラーになります。Excelの列数の上限(16,384列)を超える数のセルを横1行に展開しようとした場合に発生します。
範囲が大きい場合は、先にCHOOSEROWS関数やCHOOSECOLS関数で絞り込みましょう。必要な行・列だけを取り出してからTOROW関数に渡すことで解決できます。
=TOROW(CHOOSEROWS(A1:Z1000, SEQUENCE(10)))
SEQUENCE関数(連番を生成する関数)で先頭10行だけを指定し、範囲を絞り込んでいます。
TOROW関数に関するよくある質問
TOROW関数について、読者の方からよく寄せられる疑問をまとめました。
Q1. GoogleスプレッドシートでもTOROW関数は使えますか?
いいえ、2026年5月時点でGoogleスプレッドシートにTOROW関数は搭載されていません。TOROW関数はExcel(Microsoft 365・Excel 2024以降)専用の関数です。
スプレッドシートで2次元データを1次元に展開したい場合は、FLATTEN関数を使います。ただしFLATTEN関数は縦1列にまとめる関数なので、ExcelのTOROW(横1行)よりはTOCOL(縦1列)に近い動きです。
=TRANSPOSE(FLATTEN(B2:D4))
FLATTEN関数で縦1列にまとめてから、TRANSPOSE関数で横向きに転置すれば、TOROW関数と同じ「横1行」の結果に近づけられます。なおFLATTEN関数には空白・エラーの除外オプションがないので、その点はExcelのTOROW関数のほうが手軽ですね。
Q2. 第2引数を省略すると空白も含まれますか?
はい、含まれます。第2引数「無視」を省略すると0(すべての値を保持)として扱われるため、空白セルも空の要素として横1行に並びます。
空白を詰めて並べたいときは、第2引数に1(空白を除外)か3(空白とエラーを除外)を指定してください。
=TOROW(B2:D4, 1)
「歯抜けのデータが空白のまま並んで困る」という場合は、まず第2引数を確認するのが解決の近道です。
Q3. 結果が横に広がって隣のセルと干渉する場合はどうすればいいですか?
TOROW関数は結果を右方向に展開(スピル)するため、出力先の横方向に十分な空きスペースが必要です。隣のセルにデータがあると #SPILL! エラーになります。
対処法は次の3つです。
- 数式を入力するセルを、右側に空きが多い位置(行の左端寄りなど)に移動する
- スピル先にある不要なデータや数式を削除する
- 横方向ではなく縦方向に展開したい場合は、TOCOL関数に切り替える
特に「すでに表が右側に詰まっている」シートでは、TOCOL関数で縦に展開したほうが干渉を避けやすいケースもあります。レイアウトに合わせて使い分けてください。
Q4. 横1行から2次元の表に戻す(逆変換)にはどうすればいいですか?
TOROW関数には逆変換の専用関数はありませんが、WRAPROWS関数を使えば横1行を指定した列数で折り返して2次元に戻せます。
=WRAPROWS(横1行の範囲, 3)
WRAPROWS関数の第2引数に列数(ここでは3)を指定すると、3列ごとに折り返して複数行の表に変換されます。縦方向に折り返したい場合は、列単位で折り返すWRAPCOLS関数を使います。
「TOROWで1行にまとめたあと、また表の形に整えたい」というときに覚えておくと便利ですよ。
Q5. Microsoft 365 Personal/FamilyとBusiness/Enterpriseの両方で使えますか?
はい、エディションを問わず利用できます。TOROW関数はMicrosoft 365のPersonalやFamily(個人向け)でも、BusinessやEnterprise(法人向け)でも同じように使えます。
判断のポイントはエディションの種類ではなく、Excelが最新の状態に更新されているかどうかです。Microsoft 365は自動更新で新関数が順次追加されるため、更新が滞っていると使えないことがあります。#NAME? エラーが出る場合は、Excelを最新バージョンに更新してから試してみてください。
買い切り版では、Excel 2024以降が対応しています。Excel 2021以前は非対応なので注意しましょう。
まとめ
TOROW関数は、2次元のセル範囲を横1行に変換するための関数です。空白やエラーの除外、スキャン方向の制御まで備わっており、データ整理を効率化できます。
この記事のポイントをおさらいしておきましょう。
- TOROW関数は
=TOROW(範囲)で、2次元データを横1行に変換する - 第2引数で空白(1)やエラー(2)を除外できる。両方除外は3を指定する
- 第3引数でスキャン方向を切り替えられる(FALSE: 行方向、TRUE: 列方向)
- TOCOL関数はペア関数で、縦1列に変換する。引数の構造は同じ
- TRANSPOSE関数とは目的が異なる。フラット化ならTOROW、転置ならTRANSPOSE
まずは =TOROW(A1:C3) のシンプルな形から試してみてください。UNIQUE関数やFILTER関数、SORT関数と組み合わせれば、散らばったデータの整理がグッと楽になりますよ。