TOROW関数の使い方|引数・TOCOL比較・エラー対処

スポンサーリンク

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行目AB
2行目12
  • FALSE(行方向): A → B → 1 → 2
  • TRUE(列方向): A → 1 → B → 2

並び順が結果に影響するので、用途に合わせて切り替えてください。

TOROW関数の使用例(基本から応用まで)

基本:セル範囲を横1行に変換

月別・拠点別の売上データを横1行に変換してみましょう。

B2:D4に以下のデータが入っているとします。

 BCD
14月5月6月
2100120110
3809085
4607065

数値部分(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が空白だったとします。

 BCD
2100120110
380 85
4607065
=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))

よくあるエラーと対処法

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関数は、2次元のセル範囲を横1行に変換するための関数です。空白やエラーの除外、スキャン方向の制御まで備わっており、データ整理を効率化できます。

この記事のポイントをおさらいしておきましょう。

  • TOROW関数は =TOROW(範囲) で、2次元データを横1行に変換する
  • 第2引数で空白(1)やエラー(2)を除外できる。両方除外は3を指定する
  • 第3引数でスキャン方向を切り替えられる(FALSE: 行方向、TRUE: 列方向)
  • TOCOL関数はペア関数で、縦1列に変換する。引数の構造は同じ
  • TRANSPOSE関数とは目的が異なる。フラット化ならTOROW、転置ならTRANSPOSE

まずは =TOROW(A1:C3) のシンプルな形から試してみてください。UNIQUE関数やFILTER関数と組み合わせれば、散らばったデータの整理がグッと楽になりますよ。


この記事で紹介した関数・関連記事

タイトルとURLをコピーしました