excel

【Excel】エクセルで表の縦横を入れ替える方法(関数も・行列入れ替え・転置貼り付けやショートカットも)

当サイトでは記事内に広告を含みます

Excelでのデータ整理や分析において、表の縦横を入れ替える、いわゆる行列の「転置」は頻繁に求められる操作の一つです。

これはデータの見方を変えたり、特定の関数やピボットテーブルでの集計に適した形に整えたりする際に非常に役立ちます。

本記事では、手動での貼り付け方法から、関数を使った動的な方法、さらにはVBAマクロによる自動化まで、Excelで表の縦横を入れ替える様々なテクニックを網羅的に解説いたします。

それぞれの方法のメリットやデメリット、具体的な手順を詳しくご紹介しますので、ご自身の状況に合わせて最適な方法を見つける手助けとなれば幸いです。

エクセルで表の縦横を入れ替える基本的な方法:コピー&貼り付け(転置)

元のサンプルデータ
月/部署 営業1部 営業2部 開発部
1月 100 120 80
2月 110 130 85
3月 105 125 90

上記は、各部署の月別売上データを示したものです。この表を元に行列の入れ替えを行います。

それではまず、Excelの標準機能を使った表の縦横入れ替え、つまり行列の転置貼り付けについて解説していきます。

これは最も手軽で、多くの状況で活用できる基本的な方法と言えるでしょう。

元のデータを準備する

転置貼り付けを行うには、まず対象となる元のデータを用意する必要があります。

先ほどのサンプルデータ「A1:D4」の範囲を選択し、コピーしましょう。

コピーは、範囲を選択した状態で「Ctrl+C」を押すか、右クリックメニューから「コピー」を選択して行います。

コピーが完了すると、選択範囲が点線で囲まれ、貼り付けが可能な状態になります。

コピーした範囲の右クリックメニュー
切り取り
コピー
貼り付けオプション
セルの挿入…
書式設定…
貼り付けの特殊オプション

コピー後、貼り付けたいセルで右クリックすると、様々な貼り付けオプションが表示されます。

「転置」オプションを使って貼り付ける

コピーしたデータを特殊な形式で貼り付けることで、縦横を入れ替えることができます。

データを貼り付けたい場所の先頭セル(ここではF1セルと仮定します)を選択し、右クリックメニューを開きましょう。

「貼り付けのオプション」の中に、四角い枠に上下の矢印が描かれたアイコン(「転置」)がありますので、これを選択してください。

この操作により、元の表の行が列に、列が行に入れ替わった状態でデータが貼り付けられます。

転置貼り付けは、元の表の構造を大きく変えるため、貼り付け先のスペースに十分な空きがあるかを確認することが非常に重要です。

もし既存のデータと重なってしまうと、そのデータが上書きされてしまうため、注意が必要でしょう。

転置貼り付けの注意点と活用シーン

この方法は非常に便利ですが、いくつかの注意点があります。

まず、転置貼り付けは一度実行すると、元のデータとの関連性がなくなります。

つまり、元のデータが変更されても、転置後のデータは自動的には更新されません。

また、セルの書式設定(色や罫線など)も一緒に転置される場合とされない場合がありますので、必要に応じて再度書式を調整する必要があります。

活用シーンとしては、集計表のレイアウト変更、グラフ作成のためのデータ整形、データベースへのインポート準備などが挙げられるでしょう。

【操作のポイント:元の書式が引き継がれるか確認しましょう】

 

リンク貼り付け(行列入れ替え)で元データと連動させる

続いては、元データに変更があった際に、転置後のデータも自動的に更新される方法を見ていきましょう。

これは「リンクされた転置貼り付け」と呼ばれる機能で、データの一貫性を保ちたい場合に非常に有効です。

リンクされた転置貼り付けを実行する

通常の転置貼り付けと同様に、まずは元のデータ範囲(A1:D4)をコピーします。

次に、貼り付けたい先頭セル(ここではF6セルと仮定します)を選択し、右クリックメニューを開いてください。

「貼り付けのオプション」の中に「リンク貼り付け」という項目がありますが、これだけでは転置されません。

ここで、「形式を選択して貼り付け」ダイアログボックスを開きます。

このダイアログ内で、「転置」のチェックボックスと「リンク貼り付け」のボタンを同時に選択し、「OK」をクリックすることで、元のデータにリンクされた形で転置貼り付けが実行されます。

リンク貼り付けのメリットとデメリット

この方法の最大のメリットは、元のデータが更新された際に、リンク先の転置データも自動的に変更される点です。

これにより、手動で何度も貼り付け直す手間が省け、データの正確性を保つことができるでしょう。

しかし、デメリットも存在します。

まず、リンク元データが移動または削除された場合、リンクが切れてエラーが表示される可能性があります。

また、ファイルサイズが若干大きくなることも考えられますし、複数のシートやブックをまたぐリンクでは、管理が複雑になることもあります。

リンク貼り付け解除と通常のデータ化

一度リンク貼り付けしたデータを、独立したデータとして扱いたい場合の解除方法も知っておくと便利でしょう。

リンクされた転置データ範囲全体を選択し、再度コピーします。

そして、同じ場所(または別の場所)に「値」として貼り付けることで、数式が解除され、純粋なデータとして固定されます。

この操作により、元データとの連動性は失われますが、データが独立するため、リンク切れの心配がなくなるでしょう。

【操作のポイント:参照元の変更に注意し、必要に応じて解除しましょう】

 

関数(TRANSPOSE関数)で行列を動的に入れ替える

今度は、関数を使って表の縦横を入れ替える方法、特にTRANSPOSE関数について確認していきます。

この方法は、元のデータが変更されると自動的に転置後のデータも更新されるため、動的なレポート作成などに非常に適しています。

TRANSPOSE関数の基本的な使い方

TRANSPOSE関数は、指定した範囲の行と列を入れ替えて表示する配列関数です。

基本的な書式は「=TRANSPOSE(配列)」となります。

例: 元のデータがA1セルからD4セルにある場合、転置後のデータを得るには「=TRANSPOSE(A1:D4)」という数式を使用します。

この関数は、一度に複数のセルに結果を返す配列関数であるため、通常の関数とは少し異なる入力方法が必要になります。

出力先の範囲を事前に選択し、数式を入力した後、特定のキー操作で確定させる必要があるでしょう。

TRANSPOSE関数入力イメージ
F G H I
1 {=TRANSPOSE(A1:D4)}
2
3
4

F1セルに数式を入力し、Ctrl+Shift+Enterで確定すると、指定した範囲に転置されたデータが表示されます。

配列関数としての入力方法

TRANSPOSE関数を使う際は、まず転置後のデータが表示される範囲を正確に選択します。

元のデータが4行3列(ヘッダーを除く)の場合、転置後は3行4列になりますので、出力先の範囲も同じサイズの3行4列を選択してください。

次に、選択した範囲の左上のセル(例えばF1)に「=TRANSPOSE(A1:D4)」と入力します。

この状態でEnterキーを押すのではなく、CtrlキーとShiftキーを押しながらEnterキーを押して数式を確定しましょう。

Ctrl+Shift+Enterで確定すると、数式が中括弧 {} で囲まれて表示され、配列関数として認識されたことがわかります。

これにより、選択した範囲全体に転置されたデータが一度に表示されるでしょう。

TRANSPOSE関数の応用と注意点

TRANSPOSE関数は、元のデータが変更されるとリアルタイムで転置後のデータも更新されるため、頻繁にデータが変動する表の表示に適しています。

ただし、配列関数であるため、結果が表示されている範囲内の特定のセルだけを編集したり削除したりすることはできません。

範囲全体を選択して削除するか、数式を解除する必要があります。

また、空白セルが含まれる場合、転置後も空白として扱われますが、数値を期待する関数と組み合わせる際には注意が必要かもしれません。

【操作のポイント:数式の入力後には必ずCtrl+Shift+Enterを押しましょう】

 

VBAマクロで表の入れ替えを自動化する

続いては、定型的な行列入れ替え作業を効率化するためのVBAマクロについて解説いたします。

繰り返し行う作業や、複雑な条件での転置が必要な場合に、マクロは非常に強力なツールとなるでしょう。

マクロを記述する準備

VBAマクロを使用するには、まず「開発」タブをExcelのリボンに表示させる必要があります。

「ファイル」タブから「オプション」を選択し、「リボンのユーザー設定」に進んで、「開発」チェックボックスをオンにしてください。

「開発」タブが表示されたら、「Visual Basic」をクリックするか、「Alt+F11」を押してVBAエディタを開きます。

VBAエディタが開いたら、左側のプロジェクトエクスプローラーで該当するブック(VBAProject)を選択し、「挿入」メニューから「標準モジュール」を選択して新しいモジュールを作成しましょう。

行列入れ替えマクロの作成と実行

作成したモジュールに、以下のVBAコードを記述してください。

Sub TransposeRange()
    Dim ws As Worksheet
    Dim sourceRange As Range
    Dim destinationRange As Range

    ' ワークシートを設定
    Set ws = ThisWorkbook.Sheets("Sheet1") ' 実際のシート名に合わせて変更

    ' 元の範囲を指定 (例: A1からD4)
    Set sourceRange = ws.Range("A1:D4") ' 実際の範囲に合わせて変更

    ' 貼り付け先の先頭セルを指定 (例: F11)
    ' 元の範囲が縦4行×横4列なので、貼り付け先は縦4行×横4列になります。
    Set destinationRange = ws.Range("F11") ' 実際の貼り付け先に合わせて変更

    ' 転置貼り付けを実行
    sourceRange.Copy
    destinationRange.PasteSpecial Paste:=xlPasteAll, Transpose:=True
    
    ' コピーモードを解除
    Application.CutCopyMode = False
    
    MsgBox "行列の入れ替えが完了しました。", vbInformation
End Sub

このコードは、指定した「sourceRange」(A1:D4)をコピーし、指定した「destinationRange」(F11)に転置して貼り付けるものです。

PasteSpecialメソッドの`Paste:=xlPasteAll`はすべての情報を貼り付けることを意味し、`Transpose:=True`が行列を入れ替える指示となります。

マクロを実行するには、VBAエディタでこのコードを選択し、ツールバーの「実行」(▶アイコン)をクリックするか、Excelシートに戻り「開発」タブから「マクロ」を選択して、作成したマクロ名を選んで実行してください。

実行後、指定したF11セルを先頭として、元の表が縦横に入れ替わった状態で貼り付けられます。

「行列の入れ替えが完了しました。」というメッセージボックスが表示されれば、成功です。

元のサンプルデータ(A1:D4)をマクロで転置貼り付けすると、下記のような結果になります。

マクロ適用後の結果
部署/月 1月 2月 3月
営業1部 100 110 105
営業2部 120 130 125
開発部 80 85 90

元の表の「月」が列に、「部署」が行に入れ替わっています。

マクロのカスタマイズと効率的な利用

作成したマクロは、`Set ws = ThisWorkbook.Sheets(“Sheet1”)`、`Set sourceRange = ws.Range(“A1:D4”)`、`Set destinationRange = ws.Range(“F11”)`の部分を変更することで、任意のシートの任意の範囲を転置貼り付けできるようになります。

例えば、日々のレポートで常に同じ範囲のデータを転置する必要がある場合は、このマクロを「クイックアクセスツールバー」に追加したり、ボタンに割り当てたりすることで、ワンクリックで実行できるようになり、作業効率が大幅に向上するでしょう。

より高度なVBAを使用すれば、特定の条件に基づいて範囲を自動的に判別し、転置を行うことも可能になります。

【操作のポイント:Range(“A1:D4”)の部分を、ご自身のデータ範囲に合わせて変更してください】

 

Excelオンライン版やその他のツールでの行列入れ替え

最後に、デスクトップ版Excel以外の環境での行列入れ替え方法や、関連する便利な機能について見ていきましょう。

現代のデータ処理は、Excelデスクトップ版に留まらない様々なツールや環境で行われています。

Excelオンラインでの転置貼り付け

ウェブブラウザ上で動作するExcelオンライン版でも、デスクトップ版と同様の基本的な転置貼り付け機能が提供されています。

データをコピーし、貼り付けたいセルで右クリックすると、「形式を選択して貼り付け」のオプションが表示されますので、そこで「転置」を選択することで行列を入れ替えることが可能です。

デスクトップ版ほどの詳細なオプションはありませんが、基本的な操作はカバーされているため、クラウド環境での作業でも問題なく対応できるでしょう。

ただし、VBAマクロや配列関数を用いた動的な転置など、一部の高度な機能はオンライン版では利用できない場合がありますので注意が必要です。

Power Queryを使ったデータ整形

より複雑なデータ変換が必要な場合に役立つのがPower Queryです。

Excelの「データ」タブにある「データの取得と変換」セクションから利用できます。

Power Queryエディタ内でデータを読み込んだ後、「変換」タブにある「行の転置」機能を使用することで、簡単にデータの縦横を入れ替えることができます。

Power Queryの利点は、元のデータを変更せずに変換ステップを記録し、データを更新するたびに同じ変換を自動的に適用できる点にあります。

これは、定型的なデータ整形作業を自動化し、データの信頼性を高める上で非常に強力なアプローチと言えるでしょう。

行列入れ替えを伴うデータ分析の基礎

なぜ行列入れ替えが必要になるのか、その背景にあるデータ分析の観点から解説します。

多くの場合、データは「行が観測値、列が変数」という形式で格納されていますが、特定のグラフを作成する際や、他のツールで分析を行う際には、「行が変数、列が観測値」の形式が必要になることがあります。

例えば、複数の項目について時系列での変化を比較するグラフでは、各項目が列として並んでいる方が適しているでしょう。

行列入れ替えは、単なる見た目の変更ではなく、データを次の分析ステップに適した「形」に整えるための重要な前処理技術の一つなのです。

【操作のポイント:利用しているExcelのバージョンや環境に適した方法を選びましょう】

まとめ

この記事では、Excelで表の縦横を入れ替える様々な方法について解説しました。

コピー&貼り付けによる「転置」は最も手軽な方法であり、一度きりの作業に適しています。

「リンクされた転置貼り付け」は、元データとの連動性を保ちたい場合に有効でしょう。

TRANSPOSE関数を使えば、数式によって動的にデータを転置させることができ、VBAマクロは定型作業の自動化に役立ちます。

さらに、Excelオンライン版やPower Queryなど、多様な環境やツールでのアプローチもご紹介いたしました。

それぞれの方法にはメリットとデメリットがありますので、ご自身の状況や目的、データの特性に合わせて最適な方法を選び、Excel作業の効率化とデータ分析の精度向上に役立てていただければ幸いです。