TRANSPOSE関数について
スピル系の関数、第四弾は TRANSPOSE関数(トランスポーズ関数) です。「トランスポーズ」は英語で「置き換える、入れ替える」という意味です。
数学では「行列の転置」を表す言葉ですが、Excel では 「縦のデータを横に、横のデータを縦に」入れ替える 関数です。
- 縦に並んだ社員名を、横一列に並べ直したい
- 月別の売上が横に並んでいるけど、縦に並べたい
- もらった表が向きが逆、自分の使いたい向きに直したい
実務でけっこう遭遇する「表の向きを変えたい」シーン。それを一発で解決してくれるのが TRANSPOSE です。
実はこの関数、スピル登場前から存在していました。ただ、当時は Ctrl + Shift + Enter を押す特殊な操作が必要で、扱いが面倒でした。
スピル時代になって、普通の Enter だけで使える ようになり、ぐっと身近な関数になっています。

TRANSPOSE関数の構文
=TRANSPOSE(配列)
引数は1つだけ。入れ替えたい範囲 を指定します。
スピル前提なので、結果は 複数セルに広がります。縦に5行あるデータを TRANSPOSE すると、横に5列に広がります。その逆も同様です。

縦を横に変える
社員名が縦に並んでいるとします。
:::excel
A1=社員名
A2=田中
A3=鈴木
A4=佐藤
A5=山田
A6=高橋
:::
これを 横一列 に並べ直したい。C1 セルに次の数式を入れます。
=TRANSPOSE(A1:A6)
すると、C1 から H1 まで横方向に5つのセルに、社員名が並びます。

数式は1つ。それで縦6行のデータが、横6列にこぼれて並びました。
表全体も入れ替えできる
逆に、横に並んでいるデータを縦に変えることもできます。月別の売上が横一列に並んでいるとします。
:::excel
A1=1月
B1=2月
C1=3月
D1=4月
A2=100000
B2=120000
C2=150000
D2=130000
:::
これを 縦 に並べ直したい。別のセル(たとえば F1)に、
=TRANSPOSE(A1:D2)
と入力すると、横向きのデータが縦向きに変身しました。

コピー&「形式を選択して貼り付け」との違い
「行と列の入れ替え」は、コピー → 形式を選択して貼り付け → 行/列の入れ替え という機能でもできます。実は多くの方は、こちらの方法を先に覚えています。
TRANSPOSE関数との違いは、
| 形式を選択して貼り付け | TRANSPOSE関数 | |
|---|---|---|
| 操作方法 | クリック中心 | 数式 |
| 元データを変更 | 反映されない(値の固定) | 自動で反映される |
| 結果の更新 | 手動でやり直し | 自動更新 |
元データを編集する可能性があるなら、TRANSPOSE関数のほうが便利です。一回きりの作業なら、貼り付け機能のほうが手軽。状況に応じて使い分け てください。
あるあるのミスとして、切り取り・貼り付けで、行/列の入れ替えはできません。
まとめ
- TRANSPOSE関数は、縦↔横を入れ替える スピル関数
- 構文:=TRANSPOSE(配列)
- 1列・1行・表全体、どれも入れ替え可能
- スピル前は Ctrl+Shift+Enter が必要だった。今は普通の Enter でOK
- 「形式を選択して貼り付け」との使い分けは、元データの変更があるかどうか で判断
次回は SEQUENCE関数。「連番をスピルで一発生成」できる、シンプルかつ便利な関数です。
ショートカット
※このレッスンに対応するショートカットはありません。