「表の行と列を入れ替えたいのに、どうやるのか分からない」「コピペしたらなぜかエラーになる」

行と列の入れ替えは、Excelで実務をこなすうえで地味に頻繁に登場する作業です。月別集計表を支店別に並べ直したり、縦長のリストを横に展開したり、場面はさまざまです。
やり方は大きく2つあります。「貼り付けオプション」と「TRANSPOSE関数」。
どちらが正解かではなく、状況に応じて使い分けるのがポイントです。
この記事では、具体的なサンプル表を使いながら、両方の手順と使い分けの判断基準を説明します。
この記事の簡単なまとめ
| 確認したいこと | 答え |
|---|---|
| とにかく手早く済ませたい | 貼り付けオプションを使う |
| 元の表と入れ替え後の表を連動させたい | TRANSPOSE関数を使う |
| Office 365(Microsoft 365)を使っている | TRANSPOSEはEnter一発で完結する |
| 空白セルが0になってしまった | IF+TRANSPOSEで解決する |
| #VALUEエラーが出た | 旧バージョンはCtrl+Shift+Enterで確定が必要 |
まず確認|どちらの方法を使う?

手順の前に、2つの方法の違いを整理しておきます。ここを読むだけで、どちらを使えばいいかが分かります。
| 比較項目 | 貼り付けオプション | TRANSPOSE関数 |
|---|---|---|
| 操作の手軽さ | クリックだけで完結 | 関数入力が必要 |
| 元データとの連動 | 連動しない | 元が変われば自動更新 |
| 書式(色・罫線)の引き継ぎ | 引き継げる | 引き継げない |
| Office 365での操作 | 変わらず簡単 | Enter一発で完結(さらに楽) |
| 向いているシーン | 一度だけ整形して使い切る場合 | 元の表と並行して管理する場合 |
「この表、今後も元データが変わるかも?」と思うなら TRANSPOSE関数、「一度整形したらもう更新しない」なら貼り付けオプションを使いましょう。
今回使うサンプル表
次の「月別売上表」を使います。行が「月」、列が「支店」の構成です。
【変換前】月が行・支店が列

| 東京支店 | 大阪支店 | 名古屋支店 | 福岡支店 | |
|---|---|---|---|---|
| 1月 | 850 | 620 | 430 | 380 |
| 2月 | 920 | 580 | 460 | 410 |
| 3月 | 1,100 | 750 | 510 | 450 |
これを行と列を入れ替えて、こちらの形にするのがゴールです。
【変換後】支店が行・月が列

| 1月 | 2月 | 3月 | |
|---|---|---|---|
| 東京支店 | 850 | 920 | 1,100 |
| 大阪支店 | 620 | 580 | 750 |
| 名古屋支店 | 430 | 460 | 510 |
| 福岡支店 | 380 | 410 | 450 |
実際にExcelで同じ表を作ってから、下の手順を試してみてください。
方法①:貼り付けオプションで行と列を入れ替える
手軽さという点では、この方法が一番です。関数の知識は一切不要で、数クリックで完了します。
手順
1. 入れ替えたい表の範囲を選択してコピーする
サンプル表(ヘッダー含む)を範囲選択し、Ctrl + C でコピーします。

2. 貼り付け先のセルを選択する
元の表と重ならない場所に貼り付け先のセルを選択します。重なっているとエラーになるので注意してください。

3. 「形式を選択して貼り付け」を開く
右クリックして「形式を選択して貼り付け」をクリック。またはショートカットで開けます。

4. 「行/列の入れ替え」にチェックを入れてOK
ダイアログの右下にある「行/列の入れ替え」にチェックを入れて「OK」をクリックします。
5. 完成
行と列が入れ替わった表が貼り付けられます。

ショートカットキーで素早く操作する
マウスなしで完結させたい場合は、次のショートカットが使えます。
コピー後に貼り付け先セルを選択した状態で:
Alt → E → S → E → Enter
または
Alt → H → V → S → E → Enter
どちらでも同じ操作が完了します。覚えにくければ、Ctrl + Alt + V でダイアログを開いてチェックする方法でも十分です。
注意点:元のデータが変わっても反映されない
貼り付けオプションで作った表は、元の表と切り離されています。
元の表の数値を変更しても、貼り付けた表には反映されません。
「毎月更新するデータ」には向きません。その場合は次のTRANSPOSE関数を使いましょう。
方法②:TRANSPOSE関数で行と列を入れ替える

TRANSPOSE関数を使うと、元の表と連動した行列変換ができます。元のデータを更新すると、変換後の表も自動で更新されます。
Office 365(Microsoft 365)の場合:Enter一発で完結
Office 365ではスピル機能が使えるため、配列数式の操作が不要です。セルを1つ選んで関数を入力するだけで完了します。
手順
1. 変換後の表を表示させたいセルを1つ選択する
空いているセルを1つ選択します(表の左上になるセルを選べばOKです)。

2. TRANSPOSE関数を入力する
=TRANSPOSE(A1:E4)
A1:E5 のところは自分の表の範囲に合わせて変更してください。今回のサンプル表では、ヘッダー行と支店列を含む範囲全体を指定します。

3. Enterキーを押す
これだけで完了です。スピル機能により、入力したセル1つを起点に、必要なセル範囲へ自動で展開されます。

4. 完成


「0」が入っているのが気になりますが行と列の並び替えはできました!
旧バージョンのExcel(2016・2019など)の場合
スピル機能がないバージョンでは、配列数式として確定させる必要があります。手順がひとつ増えます。
手順
1. 変換後の表が入るセル範囲を先に選択する
元の表が「4行×5列」(ヘッダー込み)なら、変換後は「5行×4列」になります。あらかじめそのセル範囲を選択してから関数を入力します。

2. TRANSPOSE関数を入力する
=TRANSPOSE(A1:E4)
3. Ctrl + Shift + Enter で確定する
Enter だけで押すと #VALUE! エラーになります。必ず Ctrl + Shift + Enter の3キー同時押しで確定してください。

数式バーに {=TRANSPOSE(A1:E4)} と波括弧が付いていれば、配列数式として正しく入力できています。
4. 完成


「0」が入っているのが気になりますが行と列の並び替えはできました!
空白セルが「0」になってしまう問題と解決法
TRANSPOSE関数を使うと、元の表に空白セルがある場合、変換後に「0」が表示されてしまうことがあります。
例:スキルチェック表(空白あり)
次のような表で、未入力のセルが「0」に変換されてしまう問題です。
【変換前】研修受講状況(空白=未受講)
| 佐藤 | 田中 | 鈴木 | 山田 | |
|---|---|---|---|---|
| Excel研修 | ○ | ○ | ||
| Word研修 | ○ | ○ | ○ | |
| PowerPoint研修 | ○ | ○ |

【TRANSPOSE関数をそのまま使った場合】
| Excel研修 | Word研修 | PowerPoint研修 | |
|---|---|---|---|
| 佐藤 | ○ | 0 | ○ |
| 田中 | 0 | ○ | ○ |
| 鈴木 | ○ | ○ | 0 |
| 山田 | 0 | ○ | 0 |

空白だったセルが全部「0」になってしまいます。
解決策:IF関数を組み合わせる
空白セルを「0」ではなく空白のまま表示させるには、IF関数を組み合わせます。
=IF(TRANSPOSE(B2:E5)=””,””,TRANSPOSE(B2:E5))
「TRANSPOSE後の値が空文字列(“”)なら空白を返す、そうでなければTRANSPOSEの値を返す」という意味です。
【IF+TRANSPOSE後】正しく空白が表示される

空白セルが「0」にならず、元の表の通りに表示されます。
Office 365(スピル対応)の場合、Enter一発で確定できます。旧バージョンでは同様に Ctrl + Shift + Enter が必要です。
2つの方法の使い分けまとめ
実務でよくある場面ごとに、どちらを使うべきかまとめます。
| 場面 | おすすめの方法 | 理由 |
|---|---|---|
| 今回限りの整形 (上司に送るだけ) | 貼り付けオプション | 手早く、書式も保てる |
| 毎月更新する売上集計表 の見方を変えたい | TRANSPOSE関数 | 元データの更新 が自動反映される |
| 印刷用に体裁を整えたい | 貼り付けオプション | 書式・色・罫線 がそのまま維持される |
| 元の表と変換後の表 を2つ並べて使いたい | TRANSPOSE関数 | 両方を常に 最新の状態で保てる |
| 空白セルが多い表 を変換したい | IF+TRANSPOSE | 0が表示されない |
基本の考え方はシンプルです。
「元の表との連動が不要 → 貼り付けオプション」
「元の表と自動で連動させたい → TRANSPOSE関数」
よくあるエラーと対処法
エラー①:#VALUE! が表示された
原因と対処:
旧バージョン(スピル非対応)のExcelで、配列数式として確定させずに Enter だけで確定した場合に発生します。
対処法:数式を入力した後、Enter の代わりに Ctrl + Shift + Enter で確定してください。数式バーに {=TRANSPOSE(…)} と波括弧がついていれば成功です。
Office 365をお使いの場合は Enter だけでOKなので、このエラーは基本的に発生しません。
エラー②:貼り付けができない(グレーアウトする)
原因と対処:
コピー元の範囲と貼り付け先の範囲が重なっている場合、「行/列の入れ替え」はグレーアウトして選択できません。
対処法:貼り付け先を、コピー元の表の範囲外に変更してください。同じシート内でも、行・列どちらかがずれていれば問題ありません。
エラー③:書式(色・罫線)が引き継がれない
原因と対処:
TRANSPOSE関数は値のみを変換します。セルの塗りつぶし・フォント・罫線などの書式は引き継がれません。
書式も保ちたい場合は貼り付けオプションを使いましょう。TRANSPOSE関数で値の連動を保ちながら書式も整えたい場合は、TRANSPOSE関数で値を展開した後、手動で書式を設定する流れになります。
エラー④:TRANSPOSE後の表の一部が書き換えられない
原因と対処:
Office 365のスピル機能で展開された範囲は、スピル全体がひとつのまとまりとして扱われます。スピル範囲の途中のセルを単独で書き換えようとすると「スピル範囲の一部を変更することはできません」というエラーになります。
数式を入力した先頭セルを選択した上で、数式全体を修正してください。個々のセルを直接書き換えることはできない仕様です。
まとめ
Excelで行と列を入れ替える方法は2つあります。
貼り付けオプション(形式を選択して貼り付け → 行/列の入れ替え)は、手軽で書式も保てます。一度整形して完成させる表に向いています。
TRANSPOSE関数は、元の表が更新されると変換後の表も自動で追従します。毎月更新する集計表や、元の表と並行して管理したい場合に向いています。Office 365ならEnter一発で完結するので、以前より格段に使いやすくなっています。

迷ったらまず貼り付けオプションを試し、「元データと連動させたい」と感じたタイミングでTRANSPOSE関数に切り替えるという流れで問題ありません。
コメント