スプレッドシートで複数行にまたがるデータを、横1行にまとめたいことってありますよね。手作業でコピー&ペーストするのは面倒ですし、データが更新されるたびにやり直しになります。
TOROW関数を使えば、2次元の範囲を数式ひとつで1行に変換できます。空白やエラーを自動で除外する機能もついているので、クリーンなデータ整理に最適です。
この記事では、TOROW関数の基本から、TOCOL関数・FLATTEN関数との違いまでわかりやすく解説します。
スプレッドシートのTOROW関数とは?
TOROW関数(読み方: トゥロウ関数)は、2次元のセル範囲や配列を横1行の配列に変換する関数です。「to row(行にする)」が名前の由来です。
たとえば、3行x4列の表を1行x12列に変換できます。元データと数式でつながっているため、元データを変更すると変換結果も自動で更新されますよ。
TOROW関数にできることをまとめると、次のとおりです。
- 2次元のセル範囲を横1行に変換する
- 空白セルやエラー値を除外して変換できる
- 読み取り順序を行方向・列方向で切り替えられる
- 他の関数(SORT、UNIQUE、FILTERなど)と組み合わせて活用できる
NOTE
TOROW関数はGoogleスプレッドシート独自の関数ではなく、ExcelのMicrosoft 365でも使用できます。ただし、Excel 2019以前のバージョンでは使えません。
TOROW関数の基本構文
=TOROW(配列, [無視], [列方向スキャン])
カッコの中に、1行に変換したい範囲と、オプションの引数を指定します。
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 配列 | 必須 | 1行に変換したいセル範囲または配列 |
| 無視 | 任意 | 除外する値の種類を指定する(0: すべて保持、1: 空白を除外、2: エラーを除外、3: 空白とエラーを除外) |
| 列方向スキャン | 任意 | 読み取り方向を指定する(FALSE: 行方向、TRUE: 列方向) |
第1引数だけで使えるシンプルな関数です。第2・第3引数はどちらも省略可能で、必要なときだけ指定すれば大丈夫ですよ。
第2引数「無視」の設定値
第2引数では、変換時に除外したい値の種類を数値で指定します。
| 値 | 動作 |
|---|---|
| 0(省略時) | すべての値を保持する |
| 1 | 空白セルを除外する |
| 2 | エラー値を除外する |
| 3 | 空白セルとエラー値の両方を除外する |
データに歯抜けやエラーが混ざっている場合は、1や3を指定するとクリーンな1行データを取得できます。
第3引数「列方向スキャン」の読み取り順序
第3引数では、2次元データをどの順番で読み取るかを指定します。
| 値 | 読み取り順序 | 説明 |
|---|---|---|
| FALSE(省略時) | 行方向 | 1行目を左から右へ → 2行目を左から右へ → … |
| TRUE | 列方向 | 1列目を上から下へ → 2列目を上から下へ → … |
たとえば以下の2行x3列のデータを変換する場合です。
| A | B | C | |
|---|---|---|---|
| 1 | あ | い | う |
| 2 | え | お | か |
- FALSE(行方向): あ → い → う → え → お → か
- TRUE(列方向): あ → え → い → お → う → か
省略時は行方向(FALSE)で左上から右へ読み取ります。データの並び順が結果に影響するので、用途に合わせて切り替えてくださいね。
TOROW関数の基本的な使い方
ここでは、月別の売上データをTOROW関数で1行に変換する例を紹介します。
サンプルデータ
A1:D4に以下のデータが入っているとします。
| A | B | C | D | |
|---|---|---|---|---|
| 1 | 4月 | 5月 | 6月 | |
| 2 | 東京 | 100 | 120 | 110 |
| 3 | 大阪 | 80 | 90 | 85 |
| 4 | 名古屋 | 60 | 70 | 65 |
数値データだけを1行にする
B2:D4の数値部分だけを1行に変換します。出力先のセル(たとえばA6)に以下の数式を入力して、Enterを押します。
=TOROW(B2:D4)
行方向(左→右、上→下)に読み取られ、9個の値が横1行に並びます。
| A | B | C | D | E | F | G | H | I | |
|---|---|---|---|---|---|---|---|---|---|
| 6 | 100 | 120 | 110 | 80 | 90 | 85 | 60 | 70 | 65 |
東京の4月→5月→6月、大阪の4月→5月→6月…という順番で並んでいますね。
空白セルを除外して変換する
データに空白セルが混ざっている場合は、第2引数に1を指定します。
=TOROW(B2:D4, 1)
空白セルをスキップして、値のあるセルだけが1行に並びます。データクレンジングの第一歩として便利ですよ。
列方向に読み取って変換する
第3引数にTRUEを指定すると、列方向に読み取ります。
=TOROW(B2:D4, 0, TRUE)
| A | B | C | D | E | F | G | H | I | |
|---|---|---|---|---|---|---|---|---|---|
| 6 | 100 | 80 | 60 | 120 | 90 | 70 | 110 | 85 | 65 |
今度は4月の東京→大阪→名古屋、5月の東京→大阪→名古屋…という月別の順番になりました。「拠点別にまとめたいか」「月別にまとめたいか」で使い分けてください。
TOROW関数の実務活用パターン
パターン1: 複数列の項目を横並びで一覧表示する
カテゴリ別に並んだ商品名を、1行にまとめて横並びで表示できます。
=TOROW(B2:D10, 1)
部署ごとに分かれた担当者名や、月別に分かれたタスク名を1行で一覧したい場面で活躍します。レポートのヘッダー行を動的に生成するときにも使えますよ。
パターン2: TOCOL関数と組み合わせて行列を変換する
TOCOL関数でいったん1列にまとめたデータを、TOROW関数で1行に変換し直すこともできます。
=TOROW(TOCOL(B2:D4, 1))
一見冗長に見えますが、TOCOL関数で空白を除外してから1行に展開するという2段階処理が1つの数式で完結します。
パターン3: SORT関数でソートしてから横並びにする
データを並べ替えた結果を横方向に展開するパターンです。
=TOROW(SORT(TOCOL(B2:D4, 1)))
TOCOL関数で1列にまとめ、SORT関数で昇順に並べ替えてから、TOROW関数で横1行に展開しています。数値の小さい順に横並びで表示したいときに便利です。
パターン4: ARRAYFORMULA関数と組み合わせて一括計算する
1行に変換した値に対して一括で計算を適用することもできます。
=ARRAYFORMULA(TOROW(B2:D4) * 1.1)
売上データを1行に変換しつつ、すべての値に1.1(税込み換算)を掛けています。ARRAYFORMULA関数と組み合わせれば、変換と計算を1つの数式でまとめられますよ。
パターン5: 複数の範囲を1行に結合する
中カッコ({})で複数の範囲を配列として渡すと、まとめて1行に変換できます。
=TOROW({B2:D4; F2:H4}, 1)
セミコロン(;)で縦方向に結合した配列を、TOROW関数で1行に変換しています。別々のシートや離れた範囲のデータを1つの行にまとめたいときに便利です。
TOCOL関数との違い・使い分け
TOROW関数には、ペアとなるTOCOL関数があります。どちらも2次元データを1次元に変換する関数ですが、出力の方向が異なります。
| 比較項目 | TOROW関数 | TOCOL関数 |
|---|---|---|
| 出力方向 | 横1行に変換 | 縦1列に変換 |
| 構文 | =TOROW(配列, [無視], [列方向スキャン]) | =TOCOL(配列, [無視], [列方向スキャン]) |
| 引数 | まったく同じ(3引数) | まったく同じ(3引数) |
| 第2引数(無視) | 同じ(0/1/2/3) | 同じ(0/1/2/3) |
| 第3引数(スキャン方向) | 同じ(FALSE/TRUE) | 同じ(FALSE/TRUE) |
| 結果の展開方向 | 右方向にスピル | 下方向にスピル |
使い分けの目安はこうです。
- 横方向にデータを並べたい → TOROW関数
- 縦方向にデータを並べたい → TOCOL関数
引数の構造は完全に同じなので、出力方向を変えたいときは関数名を入れ替えるだけで切り替えられます。
実務では、TOCOL関数を使うケースのほうが多いです。スプレッドシートではデータを縦方向に並べるのが基本で、SORT関数やFILTER関数、UNIQUE関数など縦方向のデータを前提とした関数が多いためです。TOROW関数は、横方向のレイアウトが必要な場面で活躍します。
FLATTEN関数との違い・使い分け
スプレッドシートには、似た機能を持つFLATTEN関数もあります。FLATTEN関数は出力が縦1列に固定されるため、横1行に変換したいときはTOROW関数を使う必要があります。
| 比較項目 | TOROW関数 | FLATTEN関数 |
|---|---|---|
| 出力方向 | 横1行 | 縦1列 |
| 空白・エラーの除外 | できる(第2引数で指定) | できない |
| スキャン方向の指定 | できる(第3引数で指定) | できない(行方向固定) |
| 複数範囲の結合 | 配列記法({})で対応 | 引数を複数指定可能 |
| Excel互換性 | あり(Microsoft 365) | なし(Sheets独自) |
使い分けの目安はこうです。
- 横1行に変換したい、または空白除外・スキャン方向の制御が必要 → TOROW関数
- 縦1列でよく、複数の離れた範囲をシンプルに結合したい → FLATTEN関数
FLATTEN関数の最大の利点は、複数の範囲を引数として直接指定できることです。
=FLATTEN(A1:C3, E1:G3, I1:K3)
ただし、FLATTEN関数の出力は縦方向に固定されるため、横1行に並べたい場合は対応できません。TOROW関数には空白除外やスキャン方向の制御もあるので、より柔軟な変換が可能ですよ。
TIP
FLATTEN関数はExcelにはない、Googleスプレッドシート独自の関数です。Excelとの互換性を意識するなら、TOROW関数を使うのがおすすめです。
よくあるエラーと対処法
TOROW関数はシンプルですが、使い方によってはエラーが発生します。
| エラー | 原因 | 対処法 |
|---|---|---|
#REF! | 出力先のセルに既にデータがある | 出力先の範囲を空にしてください |
#REF! | 参照先の行や列が削除された | 参照先セルが存在するか確認してください |
#VALUE! | 第2引数に0~3以外の値を指定した | 0、1、2、3のいずれかを指定してください |
#VALUE! | 第3引数にTRUE/FALSE以外の値を指定した | TRUEまたはFALSEを指定してください |
#NAME? | 関数名のスペルミス | 「TOROW」のスペルを確認してください |
| 空白が混ざる | 元データに空白セルがある | 第2引数に1または3を指定して空白を除外してください |
特に注意したいのが「出力先のセルに既にデータがある」ケースです。TOROW関数は右方向にスピル展開するため、右側のセルにデータがあると #REF! エラーになります。
TIP
エラー値が混在するデータを扱うときは、第2引数に2(エラー除外)または3(空白+エラー除外)を指定しましょう。IFERRORで個別に対処するよりスマートです。
まとめ
TOROW関数は、2次元のセル範囲を横1行に変換するための関数です。空白やエラーの除外、読み取り方向の制御まで備わっており、データ整理の強い味方になります。
この記事のポイントをおさらいしておきましょう。
- TOROW関数は
=TOROW(範囲)で、2次元データを横1行に変換する - 第2引数で空白(1)やエラー(2)を除外できる。両方除外は3を指定する
- 第3引数でスキャン方向を切り替えられる(FALSE: 行方向、TRUE: 列方向)
- TOCOL関数はペア関数で、縦1列に変換する。引数の構造は同じ
- FLATTEN関数と比べて、横1行出力・空白除外・スキャン方向制御・Excel互換性の点で優れている
まずは =TOROW(A1:C3) のシンプルな使い方から試してみてください。横方向にデータを展開したいときに、TOROW関数が力を発揮しますよ。
