Power Query で [ピボット解除] をすると、マトリックス形式の表をテーブル形式にすることができますが、このとき列見出しが 2 行 (2 段) になっているときはどうする?という質問をいただいたので書いておきます。

イメージはこんな感じ↓

ここではデータ ソースとしてこの Excel ブックを指定して Power BI Desktop にテーブルをインポートするうえで、あらかじめテーブルに変換してから Excel ブックを保存しておきました。(テーブルのほうが余計な行列削除などの加工ステップを省けるので。)

Excel から Power Query エディターを起動して加工後のテーブルをワークシートに読み込みたいのなら、リボンの [データ] タブの [データの取得と変換] の [テーブルまたは範囲から] を実行してテーブルに変換しつつ Power Query での加工に進めるとスムーズだと思います。


データ ソースの指定 (Power BI Desktop)

1. リボンの [ホーム] タブの [データ] グループの [Excel ブック] をクリックします。

2. [開く] ダイアログ ボックスでテーブルが含まれる Excel ブックを選択して [開く] をクリックします。

3. [ナビゲーター] でテーブルを選択して [データの変換] をクリックします。

4. 選択したテーブルのクエリが作成され、Power Query エディターが起動します。

テーブルを加工する (ピボット解除前の作業)

1. 後の作業でテーブルの行列を入れ替えて現在の見出しをデータとして利用するための準備をします。

(クエリを選択して) リボンの [ホーム] タブの [1 行目をヘッダーとして使用] の ▼ をクリックして [ヘッダーを 1 行目として使用] をクリックします。

2. ヘッダーが 1 行目に (降格、っていうのかな) 設定されます。

リボンの [変換] タブの [入れ替え] をクリックします。

 3. 後の作業でフィルを実行してカテゴリ名をコピーするための準備をします。
現在の [Column1] の「列 1」や「列 2」を「null」に、「カテゴリA」や「カテゴリB」はそのまま格納される新しい列を作成します。

リボンの [列の追加] タブの [条件列] をクリックします。 

4. [条件列の追加] で新しく作成する列に指定する値を決定します。
 あとで列名は変えてしまう予定なのでなんでもよいから、ここでは「カスタム」のままにしています。
[Column1] 列の値が「列」で始まる場合は「null」を格納するように指定します。

5.「カテゴリ A」などはそのまま [Column1] の値を使いたいので、[それ以外の場合] で [列の選択] を選択し、[Column1] を選択して [OK] をクリックします。

6. (どこにあってもよいんだけれどここではわかりやすいように) 作成した列を左端に移動しています。

7. 作成した [カスタム] 列の「null」を処理してカテゴリ名を含める処理をします。

列を選択して、リボンの [変換] タブの [フィル] をクリックして [下へ] をクリックします。

8. 「null」だった行にカテゴリ名が指定されます。

もともとの [Column1] 列は不要になったので削除します。

9. 現在の 1 行目をヘッダーに昇格します。

リボンの [ホーム] タブの [1 行目をヘッダーとして使用] をクリックします。

10. 後でもいいけれど、ここで列名を整えています。


テーブルを加工する (ピボット解除)

見出しが 1 行に整ったので、あとは普通にピボット解除です。

1. ピボット解除しない列 (ここでは [カテゴリー] 列と [種別] 列) を選択して、リボンの [変換] タブの [列のピボット解除] の ▼ をクリックして [その他の列のピボット解除] をクリックします。

2. ピボット解除が実行されて、[属性] 列と [値] 列のセットで値が表示されます。

これがやりたかったこと。 

3. Power BI Desktop にインポート (Excel ワークシートに読み込み) したときに使用したい列名に変更します。

4. Power BI Desktop に読み込みます。


見出しが 2 行以上あるのなら行列を入れ替えてデータを補完する列を作って処理すればよい、ということですね。

石田 かのこ