Excelで1行内にある一部の複数列の内容を1列につき1行になるように再構成

試してみる/やってみる
概要

Excelで、1行内の一部に複数の並列的な情報を複数列に渡って持つ表において、それら複数列の内容を1列につき1行になるように分解・再構成したい。その際、それら並列的な情報以外の列の内容も損なわれないようにしたい。
Power Query を使ったらわりと簡単にできた。

詳細

やりたいこと

Excelで、1行内の一部に複数の並列的な情報を複数列に渡って持つ表において、それら複数列の内容を1列につき1行になるように分解・再構成したい。

(例)
ある人々の集団の情報に関して、人物1人につき1行が割り当てられた表があるとする。その1行の中には、その人物の基本情報、および父親・母親・祖父・祖母の氏名が別々の列に記載されている。それらの中には、空欄のセルもある。
やりたいことは、その父親・母親・祖父・祖母ごとに1行になるように表を書き換えること。ただし、父親・母親・祖父・祖母のうち空欄のセルについては、それに対応する新たな行は作らない。
こうすると、情報が人物1人につき最大4行に増えてしまうが、それでもかまわない。また、その人物の基本情報は、増えた行それぞれに対して、もともとの行と同様に付加されるようにしたい。

スクリーンショット 2021-11-05 225439.png

使ったツール

Microsoft Excel for Microsoft 365 MSO (バージョン 2110 ビルド 16.0.14527.20234) 64 ビット

解決法

概要など

このように1行内に複数の並列的な情報を複数列に渡って持つ表のことを何と呼ぶのか分からない。しかしおそらく「クロス集計表」に近いものだと考えられる。
このため、クロス集計表を通常の表に戻す作業と同様のことをすれば解決できる、と考えた。

やったこと

上記(例)の表に対して以下のように行った。

操作対象の表を含むデータの最新版が Excelブックとして保存されていることを確認。

Excel で Power Query を開く。

 操作の遷移:Excel のメニューバー – データ – データの取得と変換 – データの取得 – ファイルから – ブックから を選択し、ファイルを開く。

2021-11-05.png

Power Query に、作業対象のExcel ファイル、およびその中のシートを読み込む。

 操作の遷移:操作対象の表を含むシートを選択する。

2021-11-05 (1).png

必要に応じて基本的な整形などを行う。
(例)列名にしたい行を指定したり、不要な列は削除したりする。

 操作の遷移(列名にしたい行を指定):メニューバー – ホーム – 1行目をヘッダーとして使用

2021-11-05 (2).png

「父親」・「母親」・「祖父」・「祖母」のみ、ピボットを解除する。

 操作の遷移:表の中から「父親」・「母親」・「祖父」・「祖母」列を複数選択して、メニューバー – 変換 – 列のピボット解除

2021-11-05 (3).png

Excel のシートに読み込む。

 操作の遷移:メニューバーのファイル – 閉じて読み込む

2021-11-05 (4).png

参考にさせていただいたウェブページ

クロス集計表をテーブルにする|クリエアナブキのちょこテク

追記:
後から知ったのだが、このような元のテーブルのことを「列持ちテーブル」や「繰り返し項目テーブル」というらしい。

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