Excelで横を縦に変換する方法5選|コピペから関数まで完全解説

  1. Excelで「横を縦に」変換したい場面とは?検索意図を整理
  2. 【方法1】貼り付けオプション「行列を入れ替え」で瞬時に変換
    1. 手順(ステップバイステップ)
    2. キーボードショートカットで操作する場合
    3. この方法の注意点
  3. 【方法2】TRANSPOSE関数で動的に横を縦に変換する
    1. TRANSPOSE関数の基本構文
    2. Excel 365 / Excel 2021以降の場合
    3. Excel 2019以前の場合(CSE数式)
    4. TRANSPOSE関数の注意点
  4. 【方法3】INDEX関数とROW関数の組み合わせで柔軟に変換
    1. 基本的な数式
    2. 数式の仕組みを解説
    3. 実践例:横並びの月別売上を縦に変換
  5. 【方法4】Power Queryで大量データを一括変換(おすすめ)
    1. Power Queryで行列を入れ替える手順
    2. Power Queryを使うメリット
    3. Power Queryが特に有効な場面
  6. 【方法5】VBA(マクロ)で横を縦に自動変換する
    1. サンプルコード
    2. VBAコードの使い方
    3. VBAを使うメリットと注意点
  7. 5つの方法を比較|どれを選ぶべき?
  8. よくあるトラブルと解決策
    1. トラブル1:TRANSPOSE関数で#VALUE!エラーが出る
    2. トラブル2:貼り付け先にデータがあると上書きされる
    3. トラブル3:結合セルが含まれていて変換できない
    4. トラブル4:変換後にデータ型がおかしくなる
    5. トラブル5:横方向が複数行ある表を縦に変換したい
  9. 実務で役立つ応用テクニック
    1. 応用1:横を縦にしながら特定のデータだけ抽出する
    2. 応用2:縦を横に変換する(逆パターン)
    3. 応用3:ピボットテーブルとの連携
    4. 応用4:Googleスプレッドシートでの横→縦変換
  10. まとめ|Excelで横を縦に変換する方法を目的別に選ぼう
  11. よくある質問(FAQ)
    1. Excelで横のデータを縦にする一番簡単な方法は?
    2. TRANSPOSE関数で#VALUE!エラーが出るのはなぜ?
    3. 元データを変更したら変換先も自動更新される方法はありますか?
    4. 大量のデータ(数千列)を横から縦に変換する場合はどうすればいい?
    5. Googleスプレッドシートでも横を縦に変換できますか?
    6. 横方向と縦方向のデータが混在する表を整理するにはどうすればいい?
    7. セル結合されたデータでも横から縦に変換できますか?

Excelで「横を縦に」変換したい場面とは?検索意図を整理

Excelで作業していると、「横方向に並んだデータを縦方向に並べ替えたい」と思う場面は非常に多いです。たとえば、以下のようなケースが代表的です。

  • 他の部署からもらった横長の集計表を、縦型のデータベース形式に直したい
  • 月別に横に並んだ売上データを、縦に並べてグラフを作りたい
  • CSVで出力されたデータが横並びだったので、縦に整形したい
  • アンケートの回答が横に展開されているので、縦に変換して分析したい

これらの悩みを解決するために、この記事では5つの方法を網羅的に解説します。最もかんたんな「コピー&貼り付け」から、大量データに対応できる「Power Query」まで、レベル別に紹介しますので、ご自身の状況にあった方法をお選びください。

なお、「横を縦にする」操作はExcelでは「行列の入れ替え」と呼ばれます。英語では「Transpose(トランスポーズ)」といいます。この用語を覚えておくと、今後の検索や操作がスムーズになるでしょう。

【方法1】貼り付けオプション「行列を入れ替え」で瞬時に変換

最も手軽で初心者におすすめなのが、貼り付けオプションの「行列を入れ替え」を使う方法です。マウス操作だけで完結するため、関数に不慣れな方でもすぐに使えます。

手順(ステップバイステップ)

  1. 横方向に並んだデータ範囲を選択します
  2. Ctrl + C でコピーします
  3. 貼り付け先のセル(空いている場所)をクリックします
  4. 右クリックして「貼り付けオプション」を表示します
  5. 「行列を入れ替え」アイコン(斜め矢印のマーク)をクリックします

これだけで横並びだったデータが縦並びに変換されます。操作時間はわずか10秒程度です。

キーボードショートカットで操作する場合

マウスを使いたくない方は、以下のショートカットも便利です。

  1. データ範囲を選択して Ctrl + C
  2. 貼り付け先セルを選択
  3. Ctrl + Alt + V(「形式を選択して貼り付け」ダイアログが開きます)
  4. ダイアログ下部の「行列を入れ替える」にチェックを入れます
  5. OKをクリック

この方法の注意点

  • 貼り付けた結果は静的な値です。元データを変更しても自動で反映されません
  • 元のデータ範囲と貼り付け先の範囲が重なるとエラーになります
  • セル結合が含まれていると正しく変換できない場合があります
  • 書式(色・罫線など)もそのまま入れ替わります

一度きりの変換であればこの方法で十分です。繰り返し行う場合や、元データとの連動が必要な場合は、次に紹介するTRANSPOSE関数をおすすめします。

【方法2】TRANSPOSE関数で動的に横を縦に変換する

TRANSPOSE関数を使えば、元データと連動した状態で行列を入れ替えられます。元データを修正すると、変換先のデータも自動で更新される点が最大のメリットです。

TRANSPOSE関数の基本構文

TRANSPOSE関数の書き方は非常にシンプルです。

=TRANSPOSE(配列)

「配列」には、横並びのデータ範囲を指定します。たとえば、A1:E1に横並びのデータがある場合は以下のように入力します。

=TRANSPOSE(A1:E1)

Excel 365 / Excel 2021以降の場合

Microsoft 365やExcel 2021以降をお使いの方は、スピル機能に対応しています。そのため、1つのセルにTRANSPOSE関数を入力してEnterを押すだけで、自動的に結果が複数セルに展開されます。

  1. 変換先の左上のセルを選択
  2. =TRANSPOSE(A1:E1) と入力
  3. Enterキーを押す
  4. 自動的に縦方向に5つのセルにデータが展開されます

Excel 2019以前の場合(CSE数式)

古いバージョンのExcelでは、スピル機能がないため配列数式(CSE数式)として入力する必要があります。

  1. 変換先のセル範囲をあらかじめ選択します(例:G1:G5)
  2. 数式バーに =TRANSPOSE(A1:E1) と入力
  3. Ctrl + Shift + Enter の3つのキーを同時に押します
  4. 数式バーに {=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で行列を入れ替える手順

  1. 横並びのデータ範囲を選択します
  2. リボンの「データ」タブ → 「テーブルまたは範囲から」をクリック
  3. Power Queryエディターが開きます
  4. リボンの「変換」タブ → 「入れ替え」をクリック
  5. 行と列が入れ替わったことを確認します
  6. 「閉じて読み込む」をクリックして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コードの使い方

  1. Alt + F11 でVBAエディターを開きます
  2. 「挿入」→「標準モジュール」を選択
  3. 上記のコードを貼り付けます
  4. 範囲を自分のデータに合わせて修正します
  5. 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で段階的に整形するのがおすすめです。

セル結合されたデータでも横から縦に変換できますか?

セル結合が含まれていると正しく変換できない場合があります。変換前に「ホーム」タブの「セルを結合して中央揃え」をクリックして結合を解除してから操作してください。解除後に空白セルができた場合は、適切な値を補填してから変換しましょう。

コメント

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