Excelで表を作っていて、「あ、これ縦と横が逆だった…」と気づいた経験はありませんか。コピペで行列を入れ替えることもできますが、元データが変わるたびに貼り直すのは面倒ですよね。
そんなときに使えるのがTRANSPOSE関数です。数式ひとつで行と列を入れ替えられて、元データとの連動もバッチリ。この記事では、基本の使い方から応用テクニックまでわかりやすく解説します。
TRANSPOSE関数とは?行と列をワンステップで入れ替える関数
TRANSPOSE(トランスポーズ)関数は、指定した範囲の行と列を入れ替えた配列を返す関数です。「transpose」は英語で「転置する・入れ替える」という意味。元の表の1行目が新しい表の1列目に、2行目が2列目に…という形で変換されます。
たとえば、3行×5列の表をTRANSPOSE関数にかけると、5行×3列の表に変わります。数式で処理するので、元データを変更すれば結果も自動で更新されるのがポイントです。
基本構文と引数
=TRANSPOSE(配列)
引数はたった1つだけです。
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 配列 | 必須 | 行と列を入れ替えたいセル範囲または配列 |
シンプルな構文なので、覚えやすいですよね。
コピペの「行列を入れ替える」との違い・使い分け
Excelには、コピー → 形式を選択して貼り付け →「行列を入れ替える」という機能もあります。どちらを使うべきか、違いを整理しておきましょう。
| 比較項目 | TRANSPOSE関数 | コピペの行列入れ替え |
|---|---|---|
| 元データとの連動 | あり(自動更新) | なし(静的コピー) |
| 書式のコピー | なし | あり |
| 入力方法 | 数式を入力 | マウス操作で完結 |
| 向いている場面 | 元データが頻繁に変わる | 一度きりの変換でOK |
使い分けの目安はシンプルです。元データと連動させたいならTRANSPOSE関数、書式ごとコピーしたいならコピペ。目的に合わせて選んでみてください。
TRANSPOSE関数の基本的な使い方
ここからは、実際の入力手順を見ていきましょう。お使いのExcelバージョンによって操作が異なるので、それぞれ解説します。
Excel 365/2021(スピル)での入力手順
Microsoft 365やExcel 2021では、スピル機能が使えます。スピルとは、数式の結果が複数セルに自動展開される機能のことです。
手順はとてもかんたんです。
- 結果を表示したいセルを1つだけ選択する
=TRANSPOSE(A1:E3)のように数式を入力する- Enterキーで確定する
これだけで、転置された表が自動的に展開されます。出力先のセルを事前に選択する必要はありません。
旧バージョン(Excel 2019以前)でのCtrl+Shift+Enter入力
Excel 2019以前ではスピルが使えません。代わりにCSE(配列数式)として入力します。
- 転置後のサイズに合わせて出力先のセル範囲を選択する(元が3行×5列なら、5行×3列を選択)
=TRANSPOSE(A1:E3)と数式を入力する- Ctrl + Shift + Enter で確定する
正しく入力できると、数式バーに {=TRANSPOSE(A1:E3)} と中括弧が表示されます。この中括弧は自動で付くもので、手入力はしないでくださいね。
入力例:縦の売上表を横に変換する
実際のデータで試してみましょう。次のような縦方向の売上表があるとします。
| A | B | |
|---|---|---|
| 1 | 月 | 売上 |
| 2 | 4月 | 120 |
| 3 | 5月 | 150 |
| 4 | 6月 | 180 |
この表を横方向に変換するには、空いているセル(たとえばD1)に次の数式を入力します。
=TRANSPOSE(A1:B4)
結果はこうなります。
| D | E | F | G | |
|---|---|---|---|---|
| 1 | 月 | 4月 | 5月 | 6月 |
| 2 | 売上 | 120 | 150 | 180 |
4行×2列の表が、2行×4列に変換されました。元のB2セルの値を「200」に変えると、転置先も自動で「200」に更新されますよ。
よくあるエラーと対処法
TRANSPOSE関数でつまずきやすいエラーと、その解決策をまとめました。
#VALUE!エラーが出るときの原因と解決策
#VALUE!エラーは、主にCSE入力時に発生します。原因と対処法は次のとおりです。
- 配列ではなく単一の値を指定している → セル範囲を正しく指定し直す
- Ctrl+Shift+Enterで確定していない → 数式バーにカーソルを置き、Ctrl+Shift+Enterで再確定する
Microsoft 365やExcel 2021をお使いなら、通常のEnter確定で問題ありません。
また、スピル対応バージョンでは#SPILL!エラーが出ることもあります。これは、展開先のセルにデータや結合セルがある場合に発生します。展開先のセルを空にすれば解決できます。
参照範囲がずれるときのチェックポイント
思った結果にならないときは、以下をチェックしてみてください。
- 転置後のサイズが合っていない(CSEの場合):元が4行×2列なら、出力先は2行×4列を選択する
- 出力範囲が大きすぎる(CSEの場合):余ったセルに
#N/Aが表示される。出力範囲を転置後のサイズぴったりに合わせる #REF!エラーが表示される:参照元の範囲がシート外になっていないか確認する
FILTER・SORT・SEQUENCEと組み合わせた応用テクニック
TRANSPOSE関数は単体でも便利ですが、他の関数と組み合わせると活用の幅がぐっと広がります。ここからはMicrosoft 365 / Excel 2021向けの応用例を紹介します。
FILTER+TRANSPOSEで条件抽出した結果を横並びに表示
FILTER関数で抽出した結果は、通常は縦方向に並びます。これをTRANSPOSEで横方向に展開できます。
たとえば、A2:A10に商品名、B2:B10にカテゴリが入っているとします。カテゴリが「食品」の商品名だけを横並びにするには、こう書きます。
=TRANSPOSE(FILTER(A2:A10, B2:B10="食品"))
FILTER関数が縦に抽出した結果を、TRANSPOSEが横方向に変換する流れです。ダッシュボードなどで横並びに表示したいときに重宝します。
SORT+TRANSPOSEで並べ替えた結果を縦横変換
SORT関数で並べ替えた結果を、そのまま横展開することもできます。
=TRANSPOSE(SORT(A2:A10))
SORT関数が昇順に並べ替えた結果を、TRANSPOSEで横一行に展開します。ランキング表を横型レイアウトで見せたいときに便利ですよ。
SEQUENCE+TRANSPOSEで連番を行方向に展開
SEQUENCE関数は通常、縦方向に連番を生成します。これを横方向にしたいときにTRANSPOSEが使えます。
=TRANSPOSE(SEQUENCE(5))
SEQUENCE(5)が生成する縦方向の1〜5を、TRANSPOSEで横方向に変換します。結果は1行×5列で「1, 2, 3, 4, 5」と横に並びます。
ちなみに、SEQUENCE関数は=SEQUENCE(1,5)のように行数と列数を指定すれば、TRANSPOSE無しでも横展開が可能です。状況に応じて使い分けてみてください。
VSTACK・HSTACKとの組み合わせ
VSTACK関数やHSTACK関数と組み合わせれば、複数の表を結合してから転置する処理も一発でできます。
HSTACKで横に結合した表をTRANSPOSEで縦に変換
たとえば、部署ごとの売上がA列とC列に分かれているとします。これを横に結合してから縦に転置するには、次のように書きます。
=TRANSPOSE(HSTACK(A1:A4, C1:C4))
HSTACK関数がA1:A4とC1:C4を横方向に結合して、TRANSPOSEがその結果を縦横入れ替えます。バラバラに配置されたデータを、見やすいレイアウトに整えるときに活躍する組み合わせです。
逆のパターンも可能です。VSTACK関数で縦に結合した結果をTRANSPOSEで横展開すれば、複数リストを横一行にまとめられます。
=TRANSPOSE(VSTACK(A1:A3, A5:A7))
まとめ:TRANSPOSE関数を使いこなすポイント
この記事では、TRANSPOSE関数の基本から応用まで解説しました。最後にポイントを整理しておきましょう。
- 構文はシンプル:
=TRANSPOSE(配列)の引数1つだけ - バージョンで入力方法が異なる:365/2021はEnter確定、2019以前はCtrl+Shift+Enter
- コピペとの使い分け:元データと連動させたいならTRANSPOSE、一度きりならコピペ
- 他の関数との組み合わせが強力:FILTER関数・SORT関数・SEQUENCE関数との併用で活用の幅が広がる
行と列の入れ替えは、表の見せ方を変えるだけでデータの印象がガラリと変わります。ぜひTRANSPOSE関数を使いこなして、見やすいレイアウトを効率よく作ってみてください。
