ADVERTISEMENT

【Googleスプレッドシート】TOROW/TOCOL関数!配列の縦横変換

【Googleスプレッドシート】TOROW/TOCOL関数!配列の縦横変換
🛡️ 超解決

スプレッドシートでデータを整理するときに、2次元配列を1行や1列に変換したい場面は多くあります。例えば、複数列のデータを1列にまとめて集計したい場合や、横長の表を縦に並べ替えたい場合です。TOROW関数とTOCOL関数を使えば、配列の縦横変換を簡単に実現できます。この記事では、両関数の基本構文から引数の使い分け、応用例までを詳しく解説します。

【要点】TOROWとTOCOLで配列を自在に変形する

  • TOROW関数: 配列を指定したスキャン方法で1行に変換します。スキャン方向や空白の扱いを引数で制御できます。
  • TOCOL関数: 配列を1列に変換します。TOROWと同様の引数を持ち、データの縦積みに便利です。
  • スキャン方法と空白の扱い: 第2引数で行方向・列方向のスキャンを、第3引数で空白セルの無視やエラー処理を指定できます。

ADVERTISEMENT

TOROW/TOCOL関数の仕組みと基本構文

TOROW関数とTOCOL関数は、指定した配列を1行または1列にフラット化する関数です。従来のTRANSPOSE関数が行と列を入れ替えるだけなのに対し、これらの関数は多次元配列を一次元に変換します。特に、複数の行や列にまたがるデータを1列にまとめたい場合に威力を発揮します。

基本構文は以下のとおりです。

  • TOROW(配列, [スキャン方法], [空白の扱い])
  • TOCOL(配列, [スキャン方法], [空白の扱い])

第1引数には変換する配列を指定します。第2引数(省略可)はスキャン方法で、1を指定すると行方向にスキャンし、2を指定すると列方向にスキャンします。デフォルトは1(行方向)です。第3引数(省略可)は空白の扱いで、0(空白をそのまま出力)、1(空白を無視)、2(空白を無視してスキャン方法を自動調整)、3(エラーを無視)などから選択できます。デフォルトは0です。

TOROW関数とTOCOL関数の使い方

基本的な変換例

  1. TOROWで配列を1行に変換する
    セル範囲A1:C3に数値が入っている場合、=TOROW(A1:C3)と入力します。結果はA1、B1、C1、A2、B2、C2、A3、B3、C3の順に1行に並びます。これがデフォルトの行方向スキャンです。
  2. TOCOLで配列を1列に変換する
    同じ範囲に対して=TOCOL(A1:C3)と入力します。結果はA1、B1、C1、A2、B2、C2、A3、B3、C3の順に1列に並びます。こちらも行方向スキャンがデフォルトです。

スキャン方法を指定する例

  1. 列方向スキャンで変換する
    TOROWで列方向にスキャンしたい場合、=TOROW(A1:C3, 2)と入力します。結果はA1、A2、A3、B1、B2、B3、C1、C2、C3の順になります。列ごとにまとめてスキャンされます。
  2. TOCOLで列方向スキャン
    同様に、=TOCOL(A1:C3, 2)と入力すれば、列方向にスキャンされた結果が1列に並びます。

空白の扱いを指定する例

  1. 空白を無視する
    範囲に空白セルが含まれる場合、=TOROW(A1:C3, 1, 1)と入力すれば、空白を飛ばしてデータだけを1行に並べます。TOCOLでも同様です。
  2. エラー値を無視する
    範囲に「#N/A」などのエラーがある場合、=TOROW(A1:C3, 1, 3)と入力すると、エラーを無視して正常な値だけを取得できます。

応用例:複数範囲の結合と変換

TOROWやTOCOLは、複数の範囲を結合してから変換することも可能です。例えば、離れたセル範囲A1:B2とD1:E2を結合して1列にしたい場合、=TOCOL({A1:B2, D1:E2})のように波カッコで囲みます。これにより、2つの範囲のデータが連結され、1列に変換されます。また、QUERY関数と組み合わせて条件抽出した結果をフラット化する使い方もできます。

TOROW/TOCOL関数使用時の注意点とよくあるエラー

スキャン方法の違いで結果が変わる

第2引数を省略するとデフォルトで行方向スキャンになりますが、データの並び順を意識しないと意図しない順序になることがあります。特に、表の見出し行とデータ行を分けて処理したい場合は、列方向スキャンを選ぶと便利です。例えば、各列のデータをまとめてから1行にしたい場合は、TOROW(配列, 2)を使います。

空白の扱いを誤るとデータ数が合わない

第3引数で空白を無視する設定(1)にすると、空白セルが結果から除外されます。そのため、元のデータに意図しない空白があると、変換後の要素数が減ってしまいます。データの完全性を保つ必要がある場合は、空白を無視しない0のままにするか、事前に空白を確認してください。また、空白を無視した後にスキャン方法を自動調整する2を指定すると、空白を除いた配列に対して最適なスキャンが行われますが、挙動が予測しにくいため注意が必要です。

エラー値が含まれる場合の対処

データ中にエラー値(#N/Aなど)が含まれていると、変換結果にもエラーが引き継がれます。第3引数に3を指定するとエラーを無視できますが、すべてのエラーが無視されるため、どのセルがエラーだったかわからなくなります。エラーの原因を調査したい場合は、第3引数を0または1にして、結果を目視確認してください。

大きな範囲を変換するとパフォーマンスが低下する

TOROWやTOCOLは、指定した範囲内のすべてのセルを処理するため、数千セル以上の範囲で使用すると計算が重くなることがあります。可能であれば、必要なデータだけを範囲指定するか、QUERY関数などで事前に絞り込んでから変換すると効率的です。

ADVERTISEMENT

TOROWとTOCOLの比較表

比較項目 TOROW TOCOL
変換方向 配列を1行(横方向)に変換 配列を1列(縦方向)に変換
主な使用場面 行方向にデータを並べたいとき、または他の関数の引数として1行の配列が必要なとき 列方向にデータを積み上げたいとき、またはVLOOKUPの検索値として1列が必要なとき
引数の共通点 第2引数と第3引数は同じ仕様で、スキャン方法と空白の扱いを指定可能
応用例 複数列のデータを1行に連結してグラフのラベルに使用 複数行のデータを1列にまとめてUNIQUE関数で重複除去

まとめ

この記事では、TOROW関数とTOCOL関数を使って配列を縦横に変換する方法を解説しました。これらの関数を使いこなせば、データの整形や集計作業が大幅に効率化します。特に、スキャン方法と空白の扱いを理解することで、思い通りの変換結果を得られるようになります。次は、変換したデータをUNIQUE関数で重複を削除したり、SORT関数で並べ替えたりして、さらに高度なデータ処理に挑戦してみてください。


ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。