エクセルで行と列を入れ替える方法【TRANSPOSE関数・貼り付けオプション】

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

でんちゃん
でんちゃん

行と列の入れ替えは、Excelで実務をこなすうえで地味に頻繁に登場する作業です。月別集計表を支店別に並べ直したり、縦長のリストを横に展開したり、場面はさまざまです。

やり方は大きく2つあります。「貼り付けオプション」と「TRANSPOSE関数」。

どちらが正解かではなく、状況に応じて使い分けるのがポイントです。

この記事では、具体的なサンプル表を使いながら、両方の手順と使い分けの判断基準を説明します。


この記事の簡単なまとめ

確認したいこと答え
とにかく手早く済ませたい貼り付けオプションを使う
元の表と入れ替え後の表を連動させたいTRANSPOSE関数を使う
Office 365(Microsoft 365)を使っているTRANSPOSEはEnter一発で完結する
空白セルが0になってしまったIF+TRANSPOSEで解決する
#VALUEエラーが出た旧バージョンはCtrl+Shift+Enterで確定が必要

まず確認|どちらの方法を使う?

でんちゃん
でんちゃん

手順の前に、2つの方法の違いを整理しておきます。ここを読むだけで、どちらを使えばいいかが分かります。

比較項目貼り付けオプションTRANSPOSE関数
操作の手軽さクリックだけで完結関数入力が必要
元データとの連動連動しない元が変われば自動更新
書式(色・罫線)の引き継ぎ引き継げる引き継げない
Office 365での操作変わらず簡単Enter一発で完結(さらに楽)
向いているシーン一度だけ整形して使い切る場合元の表と並行して管理する場合
判断の目安

この表、今後も元データが変わるかも?」と思うなら TRANSPOSE関数、「一度整形したらもう更新しない」なら貼り付けオプションを使いましょう。


今回使うサンプル表

次の「月別売上表」を使います。行が「月」、列が「支店」の構成です。

【変換前】月が行・支店が列

東京支店大阪支店名古屋支店福岡支店
1月850620430380
2月920580460410
3月1,100750510450

これを行と列を入れ替えて、こちらの形にするのがゴールです。

【変換後】支店が行・月が列

1月2月3月
東京支店8509201,100
大阪支店620580750
名古屋支店430460510
福岡支店380410450

実際にExcelで同じ表を作ってから、下の手順を試してみてください。


方法①:貼り付けオプションで行と列を入れ替える

手軽さという点では、この方法が一番です。関数の知識は一切不要で、数クリックで完了します。

手順

1. 入れ替えたい表の範囲を選択してコピーする

サンプル表(ヘッダー含む)を範囲選択し、Ctrl + C でコピーします。

表を範囲選択した状態

2. 貼り付け先のセルを選択する

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

貼り付け先のセルを選択した状態(例:A8セルを選択)

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つを起点に、必要なセル範囲へ自動で展開されます。

Enterを押した直後、スピルで展開された状態

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
山田00

空白だったセルが全部「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+TRANSPOSE0が表示されない

基本の考え方はシンプルです。

「元の表との連動が不要 → 貼り付けオプション」
「元の表と自動で連動させたい → 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関数に切り替えるという流れで問題ありません。

この記事を書いた人
でんちゃん

IT企業で人事として6年、200名以上の面接を担当。基本情報技術者資格保有。IT転職・Excel・子育て情報を発信中。

【経歴】
・IT企業で採用・教育・労務・人事制度を6年経験
・200名以上のIT転職者を面接
・基本情報技術者資格保有
・Excelを使ったデータ分析が得意
・一児の父として子育て奮闘中

【このブログについて】
「IT転職で損してほしくない」という想いからスタート。採用する側のリアルな視点でIT転職・Office365・子育てと仕事の両立について発信しています。

でんちゃんをフォローする
office365
シェアする
でんちゃんをフォローする

コメント

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