Excelで「横を縦に」変換したい場面とは?検索意図を整理
Excelで作業していると、「横方向に並んだデータを縦方向に並べ替えたい」と思う場面は非常に多いです。たとえば、以下のようなケースが代表的です。
- 他の部署からもらった横長の集計表を、縦型のデータベース形式に直したい
- 月別に横に並んだ売上データを、縦に並べてグラフを作りたい
- CSVで出力されたデータが横並びだったので、縦に整形したい
- アンケートの回答が横に展開されているので、縦に変換して分析したい
これらの悩みを解決するために、この記事では5つの方法を網羅的に解説します。最もかんたんな「コピー&貼り付け」から、大量データに対応できる「Power Query」まで、レベル別に紹介しますので、ご自身の状況にあった方法をお選びください。
なお、「横を縦にする」操作はExcelでは「行列の入れ替え」と呼ばれます。英語では「Transpose(トランスポーズ)」といいます。この用語を覚えておくと、今後の検索や操作がスムーズになるでしょう。
【方法1】貼り付けオプション「行列を入れ替え」で瞬時に変換
最も手軽で初心者におすすめなのが、貼り付けオプションの「行列を入れ替え」を使う方法です。マウス操作だけで完結するため、関数に不慣れな方でもすぐに使えます。
手順(ステップバイステップ)
- 横方向に並んだデータ範囲を選択します
- Ctrl + C でコピーします
- 貼り付け先のセル(空いている場所)をクリックします
- 右クリックして「貼り付けオプション」を表示します
- 「行列を入れ替え」アイコン(斜め矢印のマーク)をクリックします
これだけで横並びだったデータが縦並びに変換されます。操作時間はわずか10秒程度です。
キーボードショートカットで操作する場合
マウスを使いたくない方は、以下のショートカットも便利です。
- データ範囲を選択して Ctrl + C
- 貼り付け先セルを選択
- Ctrl + Alt + V(「形式を選択して貼り付け」ダイアログが開きます)
- ダイアログ下部の「行列を入れ替える」にチェックを入れます
- OKをクリック
この方法の注意点
- 貼り付けた結果は静的な値です。元データを変更しても自動で反映されません
- 元のデータ範囲と貼り付け先の範囲が重なるとエラーになります
- セル結合が含まれていると正しく変換できない場合があります
- 書式(色・罫線など)もそのまま入れ替わります
一度きりの変換であればこの方法で十分です。繰り返し行う場合や、元データとの連動が必要な場合は、次に紹介するTRANSPOSE関数をおすすめします。
【方法2】TRANSPOSE関数で動的に横を縦に変換する
TRANSPOSE関数を使えば、元データと連動した状態で行列を入れ替えられます。元データを修正すると、変換先のデータも自動で更新される点が最大のメリットです。
TRANSPOSE関数の基本構文
TRANSPOSE関数の書き方は非常にシンプルです。
=TRANSPOSE(配列)
「配列」には、横並びのデータ範囲を指定します。たとえば、A1:E1に横並びのデータがある場合は以下のように入力します。
=TRANSPOSE(A1:E1)
Excel 365 / Excel 2021以降の場合
Microsoft 365やExcel 2021以降をお使いの方は、スピル機能に対応しています。そのため、1つのセルにTRANSPOSE関数を入力してEnterを押すだけで、自動的に結果が複数セルに展開されます。
- 変換先の左上のセルを選択
- =TRANSPOSE(A1:E1) と入力
- Enterキーを押す
- 自動的に縦方向に5つのセルにデータが展開されます
Excel 2019以前の場合(CSE数式)
古いバージョンのExcelでは、スピル機能がないため配列数式(CSE数式)として入力する必要があります。
- 変換先のセル範囲をあらかじめ選択します(例:G1:G5)
- 数式バーに =TRANSPOSE(A1:E1) と入力
- Ctrl + Shift + Enter の3つのキーを同時に押します
- 数式バーに {=TRANSPOSE(A1:E1)} と波括弧が表示されれば成功です
このCSE数式の入力方法は、慣れるまで少し戸惑うかもしれません。「Ctrl + Shift + Enter」を忘れずに押すのがポイントです。
TRANSPOSE関数の注意点
- 変換後のセルを個別に編集・削除することはできません
- 元データの範囲が変わった場合、関数も修正が必要です
- 大量のデータ(数万行以上)では計算が重くなる場合があります
【方法3】INDEX関数とROW関数の組み合わせで柔軟に変換
TRANSPOSE関数以外にも、INDEX関数とROW関数(またはCOLUMN関数)を組み合わせる方法があります。この方法はより柔軟性が高く、特定の列だけ抽出しながら変換したい場合に便利です。
基本的な数式
A1:E1の横並びデータを縦に変換する場合の数式は以下のとおりです。
=INDEX($A$1:$E$1,1,ROW()-ROW($G$1)+1)
この数式をG1セルに入力し、G5セルまで下方向にコピーします。
数式の仕組みを解説
- INDEX関数:指定した範囲から行番号と列番号でデータを取り出します
- ROW():現在のセルの行番号を返します
- ROW()-ROW($G$1)+1:貼り付け先の位置に応じて列番号を1, 2, 3…と増加させます
この方法のメリットは、変換対象を自由にカスタマイズできる点です。たとえば、2行目だけを縦に変換したい、あるいは3列おきにデータを取得したいなど、複雑な条件にも対応できます。
実践例:横並びの月別売上を縦に変換
A1:L1に「1月〜12月」の見出し、A2:L2に売上金額が入っているケースを考えましょう。
| 変換前(横) | 1月 | 2月 | 3月 | … | 12月 |
|---|---|---|---|---|---|
| 売上 | 100万 | 120万 | 95万 | … | 150万 |
以下の2つの数式を使って、縦型に変換します。
N1セル(月名用):=INDEX($A$1:$L$1,1,ROW()-ROW($N$1)+1)
O1セル(売上用):=INDEX($A$2:$L$2,1,ROW()-ROW($O$1)+1)
これをN12、O12まで下にコピーすれば完成です。縦型のデータベース形式になるため、ピボットテーブルやグラフの作成がしやすくなります。
【方法4】Power Queryで大量データを一括変換(おすすめ)
数百行・数千列にもおよぶ大規模データの場合、関数での変換は現実的ではありません。そこで活躍するのがPower Query(パワークエリ)です。Excel 2016以降で標準搭載されている強力なデータ変換ツールです。
Power Queryで行列を入れ替える手順
- 横並びのデータ範囲を選択します
- リボンの「データ」タブ → 「テーブルまたは範囲から」をクリック
- Power Queryエディターが開きます
- リボンの「変換」タブ → 「入れ替え」をクリック
- 行と列が入れ替わったことを確認します
- 「閉じて読み込む」をクリックしてExcelシートに出力
Power Queryを使うメリット
- 元データを更新すると「すべて更新」ボタン一つで再変換できます
- 変換前にフィルター・並べ替えなどの前処理が可能です
- 数万行のデータでも高速に処理できます
- 変換の手順が記録されるため、再現性が高いです
Power Queryが特に有効な場面
| 場面 | おすすめ度 | 理由 |
|---|---|---|
| 毎月届くレポートの形式変換 | ★★★★★ | 更新ボタンで自動変換できる |
| CSVデータの整形 | ★★★★★ | 読み込みと変換を同時に行える |
| 一度きりの小規模変換 | ★★☆☆☆ | 貼り付けオプションの方が手軽 |
Power Queryは最初は少しとっつきにくいかもしれませんが、一度覚えると業務効率が大幅にアップします。定期的にデータ変換を行う方は、ぜひ習得してみてください。
【方法5】VBA(マクロ)で横を縦に自動変換する
さらに高度な自動化を求める方には、VBA(Visual Basic for Applications)によるマクロがおすすめです。ボタン一つで横データを縦に変換する仕組みを作れます。
サンプルコード
以下は、A1:E1の横並びデータをG1:G5に縦変換する簡単なVBAコードです。
Sub TransposeData()
Dim srcRange As Range
Dim destRange As Range
Dim i As Long
Set srcRange = Range(“A1:E1”)
Set destRange = Range(“G1”)
For i = 1 To srcRange.Columns.Count
destRange.Offset(i – 1, 0).Value = srcRange.Cells(1, i).Value
Next i
MsgBox “変換が完了しました”
End Sub
VBAコードの使い方
- Alt + F11 でVBAエディターを開きます
- 「挿入」→「標準モジュール」を選択
- 上記のコードを貼り付けます
- 範囲を自分のデータに合わせて修正します
- F5キーで実行します
VBAを使うメリットと注意点
- メリット:複雑な条件分岐やループ処理を組み合わせられる
- メリット:ボタンに割り当てて誰でもワンクリックで実行可能
- 注意点:マクロ有効ブック(.xlsm)で保存する必要がある
- 注意点:セキュリティ設定でマクロがブロックされる場合がある
VBAはプログラミングの知識が必要ですが、定型作業を大幅に効率化できます。繰り返し作業が多い方はチャレンジする価値があるでしょう。
5つの方法を比較|どれを選ぶべき?
ここまで紹介した5つの方法を、用途別に比較してみましょう。
| 方法 | 難易度 | 元データとの連動 | 大量データ対応 | おすすめの場面 |
|---|---|---|---|---|
| 貼り付けオプション | ★☆☆☆☆ | なし | △ | 一度きりの簡単な変換 |
| TRANSPOSE関数 | ★★☆☆☆ | あり | △ | 小〜中規模の動的変換 |
| INDEX+ROW関数 | ★★★☆☆ | あり | △ | 柔軟なカスタマイズが必要な場合 |
| Power Query | ★★★☆☆ | あり(更新可能) | ◎ | 大量データや定期的な変換 |
| VBA | ★★★★☆ | 実行時に更新 | ◎ | 完全自動化・複雑な処理 |
迷った場合は以下を基準にしてください。
- すぐに終わらせたいなら → 貼り付けオプション
- 元データと連動させたいなら → TRANSPOSE関数
- 大量データや定期作業なら → Power Query
よくあるトラブルと解決策
横を縦に変換する際に起きやすいトラブルと、その解決方法をまとめます。
トラブル1:TRANSPOSE関数で#VALUE!エラーが出る
古いバージョンのExcelでTRANSPOSE関数を使う場合、Ctrl + Shift + Enterで確定しないとエラーになります。数式バーに波括弧 { } が表示されているか確認してください。
トラブル2:貼り付け先にデータがあると上書きされる
行列の入れ替え貼り付けを行う前に、貼り付け先が空であることを必ず確認しましょう。既存のデータがあると上書きされて復元できません。事前にバックアップを取ることをおすすめします。
トラブル3:結合セルが含まれていて変換できない
セル結合が含まれるデータは正しく変換できません。まずセル結合を解除してから変換を行ってください。「ホーム」タブの「セルを結合して中央揃え」をクリックすると結合を解除できます。
トラブル4:変換後にデータ型がおかしくなる
数値が文字列になったり、日付がシリアル値で表示されることがあります。変換後にセルの書式設定を確認し、正しい表示形式に修正してください。
トラブル5:横方向が複数行ある表を縦に変換したい
見出し行とデータ行がある2次元の表全体を入れ替えたい場合は、表全体を選択してから貼り付けオプションまたはTRANSPOSE関数を使います。範囲指定を間違えないように注意しましょう。
実務で役立つ応用テクニック
応用1:横を縦にしながら特定のデータだけ抽出する
INDEX関数とMATCH関数を組み合わせれば、横並びのデータから条件に合致するものだけを縦に抽出できます。たとえば、売上100万円以上の月だけを抽出するような使い方が可能です。
応用2:縦を横に変換する(逆パターン)
今回とは逆に「縦のデータを横に並べたい」場合も、同じ方法が使えます。TRANSPOSE関数や貼り付けオプションは双方向に対応しています。覚えておくと非常に便利です。
応用3:ピボットテーブルとの連携
横並びのデータを縦型に変換する最大の理由は、ピボットテーブルで分析するためというケースが多いです。ピボットテーブルはデータベース形式(縦型)のデータを前提としているため、横並びのデータはまず縦に変換する必要があります。
Power Queryで変換してからピボットテーブルに読み込むワークフローを構築すると、データ分析がとても効率的になります。
応用4:Googleスプレッドシートでの横→縦変換
GoogleスプレッドシートでもTRANSPOSE関数がそのまま使えます。構文も同じで、スピル機能にも対応しています。Excelとスプレッドシートの両方を使う方は、TRANSPOSE関数を覚えておくと便利です。
まとめ|Excelで横を縦に変換する方法を目的別に選ぼう
この記事では、Excelで横並びのデータを縦に変換する5つの方法を解説しました。最後に要点を整理します。
- 貼り付けオプション:最も簡単。一度きりの変換におすすめ
- TRANSPOSE関数:元データと連動する動的な変換。小〜中規模データ向け
- INDEX+ROW関数:柔軟なカスタマイズが可能。特定条件での抽出にも対応
- Power Query:大量データや定期的な変換に最適。更新も簡単
- VBA:完全自動化を実現。プログラミング知識が必要
まずは貼り付けオプションから試してみてください。それで不十分な場合は、TRANSPOSE関数やPower Queryにステップアップしていくのが効率的です。
Excelの「行列の入れ替え」は、データ整形の基本スキルです。一度マスターすれば、さまざまな場面で活用できます。ぜひ今日から実践してみてください。
よくある質問(FAQ)
Excelで横のデータを縦にする一番簡単な方法は?
最も簡単な方法は「貼り付けオプション」の「行列を入れ替え」を使う方法です。データをコピーし、貼り付け先で右クリック→「行列を入れ替え」アイコンをクリックするだけで変換できます。所要時間は約10秒です。
TRANSPOSE関数で#VALUE!エラーが出るのはなぜ?
Excel 2019以前のバージョンでは、TRANSPOSE関数を配列数式として入力する必要があります。数式入力後にEnterではなく「Ctrl + Shift + Enter」の3つのキーを同時に押してください。数式バーに波括弧 { } が表示されれば正しく入力できています。
元データを変更したら変換先も自動更新される方法はありますか?
TRANSPOSE関数を使えば、元データと連動して変換先も自動更新されます。また、Power Queryを使えば「すべて更新」ボタンで最新データに再変換できます。貼り付けオプションは静的な値になるため自動更新されません。
大量のデータ(数千列)を横から縦に変換する場合はどうすればいい?
大量データの場合はPower Query(パワークエリ)がおすすめです。Excel 2016以降で標準搭載されており、「データ」タブから起動できます。数万行のデータでも高速に処理でき、変換手順も記録されるため再利用が簡単です。
Googleスプレッドシートでも横を縦に変換できますか?
はい、Googleスプレッドシートでも同じくTRANSPOSE関数が使えます。構文は「=TRANSPOSE(範囲)」で、Excelと全く同じです。スピル機能にも対応しているため、1つのセルに入力するだけで自動的に展開されます。
横方向と縦方向のデータが混在する表を整理するにはどうすればいい?
表全体を選択して貼り付けオプションの「行列を入れ替え」を使うか、TRANSPOSE関数で表全体を指定することで、行と列をまるごと入れ替えられます。複雑な構造の場合はPower Queryで段階的に整形するのがおすすめです。
セル結合されたデータでも横から縦に変換できますか?
セル結合が含まれていると正しく変換できない場合があります。変換前に「ホーム」タブの「セルを結合して中央揃え」をクリックして結合を解除してから操作してください。解除後に空白セルができた場合は、適切な値を補填してから変換しましょう。

コメント