エクセルで横方向(行方向)に入力されたデータを縦方向(列方向)に変換したい、またはその逆を行いたいという場面があります。
たとえばアンケートの集計データが横一列に並んでいるのを、縦のリスト形式に変換したい場合などが代表的です。
エクセルにはTRANSPOSE関数と「行列を入れ替える」貼り付けオプションという2つの主要な方法があり、動的に連動させるか静的に変換するかによって使い分けが変わります。
この記事では、エクセルで行列変換・転置を行うさまざまな方法を丁寧に解説していきます。
行列変換の2つのアプローチ(静的変換と動的変換)を理解することが重要
それではまず、エクセルで行列変換を行う際の2つの基本的なアプローチについて解説していきます。
「行列を入れ替える」貼り付けオプションで静的に変換する方法
最も手軽な行列変換の方法は「形式を選択して貼り付け」の「行列を入れ替える」オプションを使う方法です。
1.変換したいデータ範囲を選択して「Ctrl+C」でコピーする
2.変換先のセルを選択する
3.「Ctrl+Alt+V」でダイアログを開く
4.「行列を入れ替える」にチェックを入れてOKをクリックする
この方法で貼り付けたデータは元のデータと独立した静的なデータになるため、元のデータが変更されても自動更新されません。
TRANSPOSE関数で動的に行列変換する方法
元のデータが変更されたときに変換結果も自動的に更新されるようにしたい場合は、TRANSPOSE関数を使います。
=TRANSPOSE(配列)
例:横3列×縦2行のデータA1:C2を転置する場合
変換先の左上セルに「=TRANSPOSE(A1:C2)」と入力する
Excel 365:そのままEnterで確定(スピル機能で自動展開)
旧バージョン:出力範囲(縦3行×横2列)を選択してCtrl+Shift+Enterで配列数式として確定
元データが更新されると変換結果も自動的に更新されるため、常に最新の状態を保ちたい場合はTRANSPOSE関数が最適です。
TRANSPOSE関数を使う際の出力範囲の考え方
TRANSPOSE関数を使う際は、元データのサイズを正確に把握しておく必要があります。
元データが「3行×5列」の場合、転置後は「5行×3列」になります。
旧バージョンのエクセルでは出力範囲を先に選択してから配列数式として入力する必要があるため、出力サイズの計算が重要です。
行列変換の応用的な使い方と他の関数との組み合わせ
続いては、行列変換の応用的な活用法と他の関数との組み合わせについて確認していきます。
VLOOKUP・INDEX関数と組み合わせた横データの縦参照
横方向に並んだデータを縦方向で参照したい場合は、VLOOKUP関数の代わりにHLOOKUP関数を使う方法もありますが、INDEX+MATCH関数を組み合わせる方が柔軟性が高くおすすめです。
INDEX+MATCH関数は縦横どちらの方向にも対応できるため、行列変換を伴う複雑な参照にも対応できます。
複数シートの横データを縦にまとめて集計する方法
複数のシートに横方向で入力されたデータをまとめて縦のリスト形式に変換したい場合は、Power Queryを活用するのが効率的です。
「データ」タブ→「データの取得と変換」からPower Queryエディタを開き、「行を列に変換」操作を使うことで複数シートのデータを一括で縦に変換できます。
WRAPROWS・WRAPCOLS関数を使ったデータ再編成(Excel 365対応)
Excel 365では、1次元のデータを指定した列数・行数の2次元データに変換するWRAPROWS関数・WRAPCOLS関数が使えます。
=WRAPROWS(配列, 列数)
→ 1次元データを指定した列数で折り返して2次元配列に変換する
データの再配置や変換作業を関数だけで完結できるため、Excel 365環境でのデータ整形に非常に有用な機能です。
まとめ
この記事では、エクセルで横のデータを縦にコピーする方法として、「行列を入れ替える」貼り付けオプション・TRANSPOSE関数・Power Query・WRAPROWS関数まで幅広く解説しました。
元データとの連動が不要なら貼り付けオプションが最もシンプルで、元データの更新に追従させたい場合はTRANSPOSE関数が最適です。
用途に合わせた方法を選んで、データの変換作業を効率化してみてください。