配列・抽出
TRANSPOSE関数の使い方・読み方
読み方:TRANSPOSE は「トランスポーズ」と読みます。(一般的な読み方です。公式に読み仮名の定めはありません)
TRANSPOSEは、行と列を入れ替える関数です。
このページの中身(24項目)
この記事の書式と対応環境の出どころ(2026-08-26 確認)
- Google スプレッドシート ヘルプ:公式の書式は
TRANSPOSE(配列または範囲)
https://support.google.com/docs/answer/3094262 - Microsoft サポート:TRANSPOSE 関数
https://support.microsoft.com/ja-jp/excel/functions/transpose-function
関数の仕様は追加・変更されることがあります。書式が合わないときは、上の公式ページで最新をご確認ください。
縦に並んだデータを横に、横に並んだデータを縦にします。元のデータには手を触れず、入れ替えた結果を別の場所に表示します。

書式
=TRANSPOSE(範囲)
引数は範囲だけです。
基本の動き
| A | B | C | |
|---|---|---|---|
| 1 | 東京 | 大阪 | 名古屋 |
| 2 | 1200 | 800 | 1500 |
=TRANSPOSE(A1:C2)
結果:
| 東京 | 1200 | |
| 大阪 | 800 | |
| 名古屋 | 1500 |
2行3列が、3行2列になりました。

貼り付け機能との違い
同じことは「編集 → 特殊貼り付け → 転置して貼り付け」でもできます。
| 特殊貼り付け | 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月 |
|---|---|---|---|
| 東京 | 1200 | 1400 | 1300 |
| 大阪 | 800 | 950 | 900 |
欲しい形
| 支店 | 月 | 金額 |
|---|---|---|
| 東京 | 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本あります。
このカテゴリで共通するつまずき
展開先が空いていないと #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 |