TRANSPOSE関数の使い方・読み方|行と列を入れ替える

執筆者:

カテゴリ:

TRANSPOSE関数の使い方・読み方のイメージ

配列・抽出

TRANSPOSE関数の使い方・読み方

Excel関数辞典

読み方:TRANSPOSE は「トランスポーズ」と読みます。(一般的な読み方です。公式に読み仮名の定めはありません)

TRANSPOSEは、行と列を入れ替える関数です。

使える環境Excel○Googleスプレッドシート○
このページの中身(24項目)
  1. 書式
  2. 基本の動き
  3. 貼り付け機能との違い
  4. 他の関数と組み合わせる
  5. 横持ちを縦持ちにしたいとき
  6. エラーの対処
  7. Excelとの違い
  8. 縦横を入れ替える二つの方法
  9. 展開される範囲を確保する
  10. 縦持ちと横持ちの設計
  11. 集計表を作り替える
  12. 印刷用の表を別に作るという発想
  13. 入れ替えたあとの書式の扱い
  14. 一度きりの変換と継続的な変換
  15. 「配列・抽出」の関数を全体から見る
  16. 数式を書く前の手順
  17. どの関数でも共通する確認
  18. 引き継ぐときに残すこと
  19. このサイトの収録状況
  20. よくある質問
  21. まとめ
  22. 関連する関数
  23. TRANSPOSE でつまずきやすいところ
  24. どちらを使うか

この記事の書式と対応環境の出どころ(2026-08-26 確認)

関数の仕様は追加・変更されることがあります。書式が合わないときは、上の公式ページで最新をご確認ください。

縦に並んだデータを横に、横に並んだデータを縦にします。元のデータには手を触れず、入れ替えた結果を別の場所に表示します。

TRANSPOSE関数の使い方の記事構成図
TRANSPOSE関数の使い方:この記事で扱う内容

書式

=TRANSPOSE(範囲)

引数は範囲だけです。

基本の動き

ABC
1東京大阪名古屋
212008001500
=TRANSPOSE(A1:C2)

結果:

東京1200
大阪800
名古屋1500

2行3列が、3行2列になりました。

TRANSPOSE関数の使い方の要点図
TRANSPOSE関数の使い方

貼り付け機能との違い

同じことは「編集 → 特殊貼り付け → 転置して貼り付け」でもできます。

特殊貼り付けTRANSPOSE
元データとの連動しない(固定値)する(自動更新)
数式の残り方値だけ残る数式として残る
使う場面一度きりの変換継続的に見たい

元データが更新される表なら TRANSPOSE、一度きりの整形なら特殊貼り付けという使い分けになります。

他の関数と組み合わせる

TRANSPOSEは範囲を返すので、他の関数の中でも使えます。

SPLITの結果を縦にする

SPLIT は結果を横方向に返します。縦にしたいときに使います。

=TRANSPOSE(SPLIT(A1, ","))

縦のリストを横に並べる

見出し行を作るときなどに使います。

=TRANSPOSE(マスタ!A2:A20)

FILTERの結果を入れ替える

=TRANSPOSE(FILTER(A2:C100, A2:A100="東京"))

縦横の検索を作る

MATCH と組み合わせて、横方向の検索に使うこともできます。ただし HLOOKUP や XLOOKUP のほうが素直です。

横持ちを縦持ちにしたいとき

TRANSPOSEでは目的を達成できないことがあります。

月ごとに列が伸びる「横持ち」の表を、集計しやすい「縦持ち」に直したい場合を考えてください。

元の表

支店4月5月6月
東京120014001300
大阪800950900

欲しい形

支店月金額
東京4月1200
東京5月1400
…

TRANSPOSEは単に行列を入れ替えるだけなので、この形にはなりません。 FLATTEN を使った変換が必要です。詳しくは FLATTEN のページで扱っています。

「行列の入れ替え」と「持ち方の変換」は別物です。ここは混同しやすいところです。

エラーの対処

#REF! が出る

結果の展開先にデータが入っています

TRANSPOSEは元の範囲の縦横を入れ替えた大きさで展開されます。

3行10列の範囲なら、結果は10行3列です。展開先にそれだけの空きが必要になります。

空欄が0になる

TRANSPOSEは空欄を 0 として返します。空欄のまま表示したいなら IF を挟みます。

=ARRAYFORMULA(IF(TRANSPOSE(A1:C2)="", "", TRANSPOSE(A1:C2)))

TRANSPOSEを2回書く必要があり冗長ですが、これが標準的な回避方法です。

書式が引き継がれない

値だけが返ります

色や罫線は反映されません。書式も含めて入れ替えたいなら、特殊貼り付けを使ってください。

Excelとの違い

TRANSPOSEは共通です。書式も挙動も同じです。

ただし違いがあります。

Excelスプレッドシート
入力方法(旧版)配列数式(Ctrl+Shift+Enter)通常の入力
入力方法(365)通常の入力通常の入力
特殊貼り付けでの転置あるある

Excel 2019以前では、TRANSPOSEは配列数式として Ctrl + Shift + Enter で確定する必要がありました。スプレッドシートでは通常の入力で動きます。


縦横を入れ替える二つの方法

行と列を入れ替える方法は二つあります。関数を使う方法と、貼り付けの機能を使う方法です。目的によって選び分けてください。

関数を使う方法は、元データと連動します。元が更新されれば、入れ替えた結果も自動的に更新されます。元データは触りません。表示の向きだけを変えたい場合に適しています。

貼り付けの機能を使う方法は、一度きりの変換です。結果は値として固定され、元データが変わっても追従しません。構造そのものを作り替えたい場合や、以降は独立して編集したい場合に使います。

判断としては、継続的に使う表なら関数、一度きりの変換なら貼り付けです。関数にしておけば、更新の手間がなくなります。

なお、関数の結果は編集できません。個別のセルを書き換えたい場合は、値として貼り付けてから作業する必要があります。


展開される範囲を確保する

関数を使う場合、結果は縦横が入れ替わった形で展開されます。元が十行三列なら、結果は三行十列になります。

展開される先に何か入っていると、衝突してエラーになります。数式を入れる前に、必要な範囲を空けておいてください。元データの行数と列数を確認して、入れ替えたときの大きさを把握しておく必要があります。

見落としやすいのは、目に見えない値が残っている場合です。過去に入力して削除したつもりでも、空白文字が残っていることがあります。範囲を選択して完全に消去してから、数式を入れ直してください。

また、元データの行数が増えると、展開される列数も増えます。右方向に余裕がないと、いずれエラーになります。行が増える可能性がある表では、この点を考慮してください。

横方向は列数の上限があるため、行が非常に多いデータを入れ替えると、上限に達することがあります。数千行を超えるデータを横に展開するのは現実的ではありません。


縦持ちと横持ちの設計

そもそも、データを縦に持つか横に持つかは、設計の問題です。入れ替えが頻繁に必要になるなら、持ち方を見直す価値があります。

縦持ちが基本です

一行が一件のデータで、列が項目。この形なら、集計も並べ替えも絞り込みも標準の機能で扱えます。行が増える方向にデータが伸びるので、上限も気になりません。

横持ちは表示用です

月を横に並べた予算表、項目を横に並べた比較表。人が読むには分かりやすい形ですが、データとしては扱いにくくなります。列が増える方向に伸びるので、上限があり、横スクロールも必要になります。

したがって、データは縦に持ち、見せるときに横に展開するという構成が理想です。入れ替えの関数を使えば、この展開が自動化できます。

すでに横持ちのデータを受け取る場合は、取り込んだ直後に縦へ変換する工程を挟んでください。以降の処理がすべて楽になります。


集計表を作り替える

入れ替えの実務的な用途として、集計表の向きを変える場面があります。

行に商品、列に月を並べた表を作ったが、報告書では行に月、列に商品が必要になった。こうした要求は珍しくありません。

関数で入れ替えれば、元の集計表はそのままに、向きだけ変えた表を別の場所に作れます。元の集計が更新されれば、こちらも自動で更新されます。

このとき、見出しも一緒に入れ替わる点に注意してください。範囲に見出しを含めれば見出しも入れ替わり、含めなければデータだけになります。用途に応じて範囲を決めてください。

もうひとつ、書式は引き継がれません。色や罫線は、入れ替えた先で改めて設定する必要があります。条件付き書式を使えば、値に応じた色付けは自動化できます。


印刷用の表を別に作るという発想

データを縦に持ち、見せるときに横に展開する。この分離ができると、集計の自由度と見た目の両方が手に入ります。

データのシートは、一行が一件、列が項目という形にします。集計も並べ替えも絞り込みも、標準の機能で扱えます。行が増える方向に伸びるので、上限も気になりません。

印刷用のシートは、人が読みやすい形にします。月を横に並べる、項目を横に並べる。見出しを二段にしても構いません。セルを結合しても構いません。ここは見た目を優先してよい領域です。

両者をつなぐのが、入れ替えの関数と集計の関数です。データのシートから必要な値を集計し、印刷用のシートに展開します。データが更新されれば、印刷用の表も自動で更新されます。

この構成の利点は、印刷用の表を何種類でも作れることです。上司向け、現場向け、外部提出用。それぞれ必要な項目と粒度が違いますが、元データは一つです。

一枚のシートで両方を満たそうとすると、必ずどちらかが犠牲になります。分けることを前提に設計してください。


入れ替えたあとの書式の扱い

関数で入れ替えた結果には、書式が引き継がれません。値だけが入れ替わります。

罫線や背景色は、入れ替えた先で改めて設定する必要があります。ただし、値に応じた色付けであれば、条件付き書式で自動化できます。数値の大小で色を変える、負の値を赤くする、といった処理は書式の設定だけで済みます。

表示形式も引き継がれません。金額なら桁区切り、日付なら日付形式を、入れ替えた先で設定してください。

列幅も自動では調整されません。入れ替えると列数が変わるので、幅の調整が必要になります。

これらの設定は、一度行えば以降は保持されます。元データが更新されても、書式は残ります。したがって、最初に整えておけば、以降は値だけが更新される形になります。

見出しの扱いも決めておいてください。範囲に見出しを含めれば見出しも入れ替わり、含めなければデータだけになります。印刷用の表では、見出しを手で入力しておくほうが自由度が高くなります。


一度きりの変換と継続的な変換

行と列を入れ替える作業には、二つの性質があります。どちらなのかを最初に決めてください。

一度きりの変換であれば、貼り付けの機能を使います。範囲をコピーし、貼り付けのオプションで行と列を入れ替える指定を選ぶだけです。結果は値として固定されるので、以降は自由に編集できます。書式も一緒に貼り付けられます。

継続的な変換であれば、関数を使います。元データが更新されれば、結果も自動で更新されます。ただし結果は編集できず、書式も引き継がれません。

判断の目安は、元データが今後も変わるかどうかです。過去のデータを整理するだけなら一度きり、毎月更新されるデータなら継続的、と考えてください。

判断に迷ったら、まず貼り付けで試してください。手順が単純で、失敗しても元に戻せます。継続的な更新が必要だと分かってから、関数に切り替えれば済みます。

なお、貼り付けで入れ替える場合も、元データは残しておいてください。入れ替えた結果に誤りが見つかったときに、やり直せます。上書きしてしまうと戻せません。

大きな範囲を入れ替える場合は、まず小さな範囲で試してから本番に進めるのが安全です。列数の上限に達していないか、書式が崩れていないかを、少量で確認できます。

「配列・抽出」の関数を全体から見る

配列・抽出は複数の値をまとめて返す関数群です。同じカテゴリの関数は、つまずく場所も似ています。この記事のほかに9本あります。

記事
ARRAYFORMULA
ARRAY_CONSTRAIN
FILTER
FLATTEN
QUERY
SEQUENCE
SORT
SORTN
UNIQUE

このカテゴリで共通するつまずき

展開先が空いていないと #REF! で止まります。専用のシートに分けてください。1つで理解した内容は、同じカテゴリの他の関数にもそのまま使えます。

どれを使うかの決め方

元の表を変えずに別の見え方を作れるのが利点です。関数の一覧を眺めて選ぼうとすると、どれも当てはまるように見えて決まりません。

迷ったときは

→ 全関数の一覧 に目的別の索引があります。


数式を書く前の手順

書き始める前に決めておくことがあります。ここが曖昧なまま書くと、途中で行き詰まります。

1. 出したい結果を一文で書く

「何を、どの条件で、どんな形で出したいか」。この一文が書ければ、関数はほぼ決まります。書けないなら、まだ要件が固まっていません。

2. 元データの型を確認する

展開先が空いていないと #REF! で止まります。専用のシートに分けてください。=ISNUMBER(A2) で数値かどうかを確認できます。見た目が同じでも、数値と文字列は別物です。

3. 空欄と0の扱いを決める

未入力なのか、実績が0なのか。表の意味が変わります。どちらとして扱うかを決めてから書いてください。

4. 条件の数を数える

元の表を変えずに別の見え方を作れるのが利点です。将来条件が増える可能性があるなら、最初から複数条件に対応する形にしてください。

5. 共有先の環境を確認する

新しい関数は、古い環境で開くとエラーになります。社外に渡すファイルでは、この一点で選択肢が変わります。

6. 1行だけ書いて確認する

全行にコピーする前に、1行分の結果が正しいかを見てください。間違ったまま広げると、直す手間が増えます。


どの関数でも共通する確認

関数を問わず、結果がずれる原因は限られています。この5つを確認すれば、大半が解決します。

参照を固定したか

下方向にコピーする数式では、動いてはいけない参照を固定します。上の数行だけ見て判断しないでください。ずれは下のほうで表面化します。

範囲の行数が揃っているか

複数の範囲を渡す関数では、行数がずれると結果が狂います。エラーにならず値が返るため、気づきにくい種類の間違いです。

型が揃っているか

=ISNUMBER(A2)

数値として入っているかを判定します。システムから書き出したデータでは、これが原因のことが多くあります。

前後に空白が入っていないか

=LEN(A2)&" / "&LEN(TRIM(A2))

数が違えば、余分な空白が入っています。見た目では判別できません。

別の方法で検算したか

同じ数字を別の関数でも出して、突き合わせてください。1つの結果だけを見ても、正しいかどうかは判断できません。

最終行まで確認したか

一番下までスクロールして、結果を見てください。途中から値が変わっていないかを確認します。


引き継ぐときに残すこと

数式は動いていても、意図は残りません。渡す前に、次の点をシート内にメモしてください。3分で終わります。

何を出している数式か

一行で構いません。読めば分かると思っても、数か月後の自分には分かりません。

どの表を参照しているか

参照先のシート名と、更新の担当。別ファイルなら、その場所も書いてください。

該当しないときの扱い

空欄にしているのか、文言を出しているのか、エラーのまま残しているのか。書いていないと、受け取った側は空欄をデータなしと読みます。

触ってはいけない場所

列を挿入すると壊れる数式がある場合、必ず書き残してください。この一行があるだけで、引き継ぎ後の事故が大きく減ります。

使った関数の対応環境

新しい関数を使っている場合、古い環境では開けません。共有の範囲が広がる可能性があるなら、明記してください。

確定した期間は値にする

締めた月の集計は、値貼り付けにしてください。参照元を消しても壊れなくなり、ファイルも軽くなります。

このサイトの収録状況

現在、201本の記事をカテゴリ別に整理しています。関数名が分からない場合は、カテゴリから探してください。

カテゴリ記事数
目的別51本
集計47本
文字列31本
日付19本
検索・参照15本
条件15本
機能12本
配列・抽出10本 ←この記事
関数一覧1本

探し方の順番

関数名が分かっているなら検索窓から。やりたいことだけ決まっているなら「目的別」から。近い関数を比べたいなら、同じカテゴリの一覧から入ってください。

記事の構成

どの記事も、書式・実例・つまずきやすいところ・似た関数との使い分けを同じ順番で並べています。1本読めば、他の記事も同じ場所を探せます。


よくある質問

Q. エラーになって展開されません

展開される先に何か入っています。必要な範囲を空にしてください。

Q. 結果を編集できません

関数の結果は編集できません。値として貼り付けてから作業してください。

Q. 書式も一緒に入れ替わりますか

入れ替わりません。値だけが入れ替わります。

Q. 空欄が零になります

元の空欄は零として扱われます。空欄のままにしたい場合は、条件で分岐して空文字を返してください。

Q. 元データを消したら結果も消えました

結果は元データと連動しています。固定したい場合は値として貼り付けてください。

Q. 一度きりでよいのですが

貼り付けの機能で、行と列を入れ替える指定を使ってください。値として固定されます。

Q. 大量のデータでも使えますか

列数の上限があるため、行数が非常に多いデータの入れ替えは現実的ではありません。

Q. 他の関数と組み合わせられますか

できます。抽出や並べ替えの結果を入れ替える、といった使い方ができます。



まとめ

  • 書式は =TRANSPOSE(範囲)。行と列を入れ替える
  • 元データと連動するのが特殊貼り付けとの違い
  • 結果は元の縦横が入れ替わった大きさで展開される
  • #REF! は展開先にデータがあるという意味
  • 空欄は 0 になる。避けるなら IF を挟む
  • 「横持ち→縦持ち」の変換はTRANSPOSEではできない。FLATTEN を使う

関連する関数

TRANSPOSE でつまずきやすいところ

Excelで #SPILL! が出る

10行1列を入れ替えると1行10列になります。 その10列ぶんが空いていないと #SPILL! です。 入れ替えた後の大きさを先に数えてください。

#REF! が出る

書き出す先がシートの端を超えると #REF! になります。 横に長い表を縦に入れ替えるとき、行数の上限に当たることがあります。 #REF!エラーの直し方で扱っている状況の1つです。

空欄が0になる

TRANSPOSE は空欄を0として返します。 空欄のまま残したいなら、包んで判定します。

=ARRAYFORMULA(IF(TRANSPOSE(A2:A10)=0,"",TRANSPOSE(A2:A10)))

Excelでは =IF(TRANSPOSE(A2:A10)=0,"",TRANSPOSE(A2:A10)) で足ります。

書式が引き継がれない

TRANSPOSE が返すのは値だけです。色や罫線は付いてきません。 書式ごと入れ替えたいなら、コピーして「特殊貼り付け → 行と列を入れ替える」を使います。 こちらは値の貼り付けなので、元が変わっても追随しません。

どちらを使うか

やりたいこと使うもの
元が変わったら結果も変えたいTRANSPOSE
一度きりの整形特殊貼り付け(行と列を入れ替える)
縦持ちを横持ちに集計しながら変えたいピボットテーブル
横持ちを縦持ちに戻したいExcelは TOCOL、スプレッドシートは FLATTEN