スプレッドシートのTRANSPOSE関数の使い方|行列入れ替え

スポンサーリンク

スプレッドシートで表の縦と横を入れ替えたいとき、「貼り付けオプションで転置」を使っている方は多いですよね。でもこの方法だと、元データを修正しても入れ替え先には反映されません。

TRANSPOSE関数を使えば、行と列を数式で入れ替えられます。元データが変わると自動で更新されるのが最大のメリットです。

この記事では、TRANSPOSE関数の基本から、QUERY関数との組み合わせや「貼り付け→転置」との違いまでわかりやすく解説します。

スプレッドシートのTRANSPOSE関数とは?

TRANSPOSE関数(読み方: トランスポーズ関数)は、セル範囲の行と列を入れ替える関数です。英語の「transpose」は「転置する・入れ替える」という意味があります。

たとえば、縦3行 x 横4列の表を、横4行 x 縦3列に変換できます。元のデータと数式でつながっているため、元データを変更すると入れ替え先も自動で更新されますよ。

TRANSPOSE関数にできることをまとめると、次のとおりです。

  • セル範囲の行と列を入れ替える(転置する)
  • 元データとリアルタイムに連動する
  • 他の関数(QUERY、SORT、FILTERなど)の結果も転置できる
  • 横持ちデータと縦持ちデータの相互変換に使える

TRANSPOSE関数の基本構文

=TRANSPOSE(配列またはセル範囲)

カッコの中に、行列を入れ替えたい範囲を指定します。

引数必須/任意説明
配列またはセル範囲必須行と列を入れ替えたいセル範囲。元の行が新しい列に、元の列が新しい行になる

引数は1つだけなので覚えやすい関数です。結果は自動でスピル展開されるため、出力先の範囲を事前に選択する必要はありません。

NOTE

Googleスプレッドシートでは、TRANSPOSE関数の結果は常に自動展開(スピル)されます。Excelの旧バージョンのようにCtrl+Shift+Enterで配列数式として入力する必要はありません。

TRANSPOSE関数の基本的な使い方

ここでは、社員名簿のような縦長の表をTRANSPOSE関数で横方向に変換する例を紹介します。

サンプルデータ

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

 ABCD
1名前部署入社年等級
2田中営業2018A
3佐藤総務2020B
4鈴木経理2019A

数式を入力する

出力先の左上セル(たとえばA7)に以下の数式を入力して、Enterを押します。

=TRANSPOSE(A1:D4)

元の4行が4列に、元の4列が4行に変換されます。

 ABCD
7名前田中佐藤鈴木
8部署営業総務経理
9入社年201820202019
10等級ABA

元データ(A1:D4)を変更すると、転置先(A7:D10)も自動で更新されますよ。

単一行・単一列の転置

1行のデータを1列に変換することもできます。

=TRANSPOSE(A1:D1)

横1行x4列の「名前, 部署, 入社年, 等級」が、縦4行x1列に変換されます。逆に、縦1列のデータを横1行に展開したいときも同じように使えます。

「貼り付け→行列を入れ替え」との違い

スプレッドシートには、コピー後に「特殊貼り付け→転置して貼り付け」を選ぶ方法もあります。TRANSPOSE関数とどちらを使うべきか、比較表で整理しました。

比較項目TRANSPOSE関数貼り付けの転置
元データとの連動あり(自動更新)なし(静的コピー)
操作方法数式を入力コピー → 右クリック → 特殊貼り付け → 転置して貼り付け
元データの追加参照範囲を広げれば自動対応再度コピー&貼り付けが必要
書式の引き継ぎなし(値のみ)あり(書式も含めてコピー)
結果の編集不可(数式の結果のため)可能(独立したデータ)

使い分けの目安はこうです。

  • 元データが更新される場合 → TRANSPOSE関数(連動して自動更新される)
  • 一度きりの変換で書式も残したい場合 → 貼り付けの転置

月次データや日報のように継続的に更新される表では、TRANSPOSE関数のほうが便利です。一方、レイアウトを整えた最終版の表をコピーしたいだけなら、貼り付けの転置で十分ですよ。

TIP

貼り付けの転置はショートカットでも操作できます。範囲をコピーした後、Ctrl+Shift+V(特殊貼り付け)で「転置して貼り付け」にチェックを入れてください。

TRANSPOSE関数の実務活用パターン

パターン1: 横持ちデータを縦持ちに変換する

月別の売上が横方向に並んでいる表を、縦方向に変換する場面はよくあります。

=TRANSPOSE(B1:M1)

横1行x12列の月名データを、縦12行x1列に変換できます。グラフの元データやピボットテーブルとして使いやすい形になりますよ。

パターン2: QUERY関数と組み合わせてデータを抽出・転置する

QUERY関数で抽出した結果を、そのままTRANSPOSEで転置できます。

たとえば、売上データから営業部のデータだけを抽出して横方向に展開する数式です。

=TRANSPOSE(QUERY(A1:D10, "SELECT B WHERE A='営業'"))

QUERY関数が縦方向に抽出した結果を、TRANSPOSEで横方向に並べ替えます。ダッシュボードで複数部署のデータを横並びに表示したいときに便利なパターンです。

もう少し複雑な例として、QUERY関数のPIVOT句と組み合わせることもできます。

=TRANSPOSE(QUERY(A1:C10, "SELECT A, SUM(C) GROUP BY A"))

グループ集計の結果を転置して、横方向に並べたレポート形式にできます。

パターン3: SORT関数・FILTER関数と組み合わせる

SORT関数FILTER関数の結果を転置することもできます。

=TRANSPOSE(SORT(A2:A10))

縦方向に並べ替えたデータを、横方向に展開します。ランキングを横一列に表示したいときに使えるテクニックです。

=TRANSPOSE(FILTER(B2:B10, A2:A10="東京"))

FILTER関数で絞り込んだ結果を横方向に展開します。特定条件のデータを横並びで見たい場面で活躍しますよ。

パターン4: ARRAYFORMULA関数と組み合わせて一括変換する

ARRAYFORMULA関数と組み合わせると、転置した結果に対して一括で計算を適用できます。

=ARRAYFORMULA(TRANSPOSE(B2:B10) * 1.1)

縦方向の売上データを横方向に転置しつつ、すべての値に1.1(税込み換算)を掛けています。転置と計算を1つの数式でまとめられるのがポイントです。

パターン5: 複数列のデータを転置してカード形式にする

個人の情報が横一列に並んでいるデータを、縦型のプロフィールカード形式に変換する使い方です。

=TRANSPOSE(A2:F2)

A2:F2に「田中, 営業部, 東京, 2018年入社, A等級, 内線1234」と横並びのデータがあれば、縦6行の一覧に変換できます。

ヘッダー行も一緒に転置すると、さらに見やすくなります。

=TRANSPOSE({A1:F1; A2:F2})

「{}」で配列を作り、ヘッダー行とデータ行を結合してから転置しています。ラベルとデータが横並びになるので、カード形式のレイアウトに最適ですよ。

よくあるエラーと対処法

TRANSPOSE関数自体はシンプルですが、使い方によってはエラーが発生します。

エラー原因対処法
#REF!転置先のセルに既にデータがある転置先の範囲を空にしてください
#REF!参照先の行や列が削除された参照先セルが存在するか確認してください
#ERROR!配列の展開先がシートの端を超える出力先をシートの左上寄りに移動してください
#N/A他の関数と組み合わせた際に空セルが含まれるIFERROR関数で空文字に置換してください
結果が1セルだけ単一セルを指定している範囲(例: A1:D4)を指定してください

特に注意したいのが「転置先のセルに既にデータがある」ケースです。スプレッドシートのスピル展開は、出力先にデータがあると #REF! エラーになります。

TIP

転置後のサイズがわからないときは、空白の多いエリアにTRANSPOSE関数を入力してみてください。元データが3行x5列なら、転置後は5行x3列になります。行数と列数が入れ替わるルールを覚えておけば迷いません。

TRANSPOSE関数の結果は編集できない

TRANSPOSE関数の結果はスピル展開された配列です。結果の一部のセルだけを編集・削除することはできません。変更したい場合は、元データを修正するか、貼り付けの転置に切り替えてください。

ExcelのTRANSPOSE関数との違い

ExcelにもTRANSPOSE関数がありますが、スプレッドシート版との違いがいくつかあります。

項目スプレッドシートExcel(Microsoft 365)Excel(2019以前)
入力方法Enterのみ(自動スピル)Enterのみ(自動スピル)Ctrl+Shift+Enter(配列数式)
出力先の事前選択不要不要必要(サイズを正確に合わせる)
結果の自動展開ありあり(スピル)なし
出力先にデータがある場合#REF! エラー#SPILL! エラー上書きされる

スプレッドシートとMicrosoft 365のExcelでは、ほぼ同じ感覚で使えます。Excel 2019以前を使っている方が移行する場合は、Ctrl+Shift+Enterが不要になる分、スプレッドシートのほうがシンプルですよ。

ExcelのTRANSPOSE関数の詳しい使い方は「ExcelのTRANSPOSE関数の使い方」で解説しています。

まとめ

TRANSPOSE関数は、セル範囲の行と列を入れ替えるシンプルな関数です。元データとリアルタイムに連動するため、更新頻度の高い表の変換に最適です。

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

  • TRANSPOSE関数は =TRANSPOSE(範囲) で、行と列を入れ替える(Enterだけで自動展開)
  • 「貼り付け→転置」は静的コピー、TRANSPOSE関数は元データと連動する
  • QUERY関数と組み合わせれば、抽出結果の転置も1つの数式で完結する
  • SORT・FILTER・ARRAYFORMULAとの組み合わせで活用の幅が広がる
  • 転置先のセルを空にしておかないと #REF! エラーが出るので注意

まずは =TRANSPOSE(A1:D4) のシンプルな使い方から試してみてください。QUERY関数との組み合わせを覚えれば、データの見せ方がグッと柔軟になりますよ。


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

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