[Power BI Tips] ヘッダーが複数行で構成されている Excel ファイル(複数)をフォルダから 1つのテーブルに取り込む

# はじめに
Excel はセル単位で自由度の高い表を作ることができる反面、分析データとして扱うには難しい表ができてしまうことがあります。よくあるのが、複数行でヘッダーを表現してしまっている場合で、分析可能なデータにするためには、ヘッダーを1行にまとめる必要があります。さらに、これをフォルダから複数ファイルまとめて取り込みを行いたいというケースについて、最近質問を受け、対処方法をまとめましたので、ご覧いただければと思います。

# 取り込み対象の複数行ヘッダー Excel ファイル
取込対象とする Excel ファイルのサンプルは以下のような形式です
### フォルダ構成
OneDrive もしくは SharePoint Online の同一フォルダ上に同じフォーマットの Excel ファイルが格納
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2642886/d632629a-88b9-62d6-4eea-36b2c031a31e.png)

### Excel ファイル
ヘッダーが複数行で構成されている Excel ファイル(1 行目はセル結合されている)
このファイルが複数、同一フォーマットで存在し、上図フォルダ内にあると想定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2642886/47bff80b-628d-efde-0c7a-7e9b584aeac9.png)

# 取り込み手順
今回、Power BI Desktop にて取込を実施します。

1. 「データを取得」にて「SharePoint フォルダー」を指定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2642886/fa7eae94-504d-217c-e11d-7510b68f7058.png)

2. 「サイト URL」に OneDrive のルート URL を入力 → 認証を求められたら認証情報入力
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2642886/5177b1ac-86d0-df7f-a5a4-6018cfaf43eb.png)

3. 「データの変換」を押下 → Power Query エディタが立ち上がり、サイト URL 配下のファイル全てがリスト形式で表示される
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2642886/8d0f7d2e-5350-2609-8477-778f8e8772d0.png)

4. 列「Folder Path」をフィルタし、該当フォルダだけに絞り込む
※補足①「Name」などで絞り込んでも良いですが、同一名称のファイルなどが引っ掛かったり、後から追加されたファイルが対象にならなかったりするので、「Folder Path」で絞り込んだ方が良いです。
※補足② OneDrive や SharePoint Online のサイト上のファイルが多いと絞り込みに時間がかかるため、SharePoint Online 上に新しいサイトを作るのも良いかと思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2642886/97c1d90e-3157-ffb5-f60e-3e02b6570952.png)

5. 列「Content」を展開する → Excel ファイルの中身が展開され、複数ファイルが結合(Union)された状態になる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2642886/ea32c73b-9008-edad-27b0-1cffe0a4f5f2.png)

6. 「ファイルの結合」→ そのまま OK
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2642886/b74dd82e-4c3b-1428-5de9-8b038741548c.png)
ヘルパークエリが自動作成され、以下のような状態になる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2642886/3aa967a7-5dd3-1f2c-d26a-4d7f357dfaf6.png)

7. ヘルパークエリ内の「サンプル ファイルの変換」をクリック
→ 1つ目のファイルをサンプルとして変換定義が作成されているので、ここを修正するのがポイント
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2642886/34d7d4ce-9fb1-3b3b-64a7-a7717b0ba245.png)

8. ヘッダーの整形をやり直すため、「クエリの設定」の「適用したステップ」の「昇格されたヘッダー数」を削除
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2642886/d555948a-205e-f282-bf58-658cc22bfb73.png)

9. リボンの「変換」タブの「入れ替え」を押下し、行と列を入れ替える
→ 行の結合はできないが、列の結合は行えるため、ヘッダー行を結合するため、一旦行列入替をおこなう
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2642886/4e3d4205-f0da-86eb-dde8-2708f0be0cc0.png)

10. 列「Column1」を右クリックし、「フィル」→「下へ」を選択
→ これにより Excelファイル上で、セル結合で穴あきになっていた箇所に値が入る
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2642886/b0405ac2-2ec6-d7e1-97c3-e7b8e1d8bc9c.png)

11. Ctrl キーを押しながら、列「Column1」「Column2」を選択し、右クリックし、「列のマージ」を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2642886/eca6d29d-8659-da91-d448-413a97b9b757.png)

12. 列のマージダイアログにて、区切り文字と新しい列名を入力
※例では、区切り文字に「-」、新しい列名はそのまま
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2642886/9fccc87d-7d0a-9e29-a453-75427f671c02.png)

13. リボンの「変換」タブの「入れ替え」を押下し、行と列を元に戻す
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2642886/664f2dbe-8df3-800e-9591-3f34c592ab8a.png)

14. リボンの「変換」タブの「1行目をヘッダーとして使用」を押下
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2642886/f7ee1671-d256-b3a0-da51-e74e2825dbb6.png)

15. 一番左の列の名前を適切なものへ変更
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2642886/235f2735-c0d4-ed61-6c60-ef62114897d5.png)
ここまでで、サンプルファイルによる変換ロジックの定義が完了です。
　

16. 「クエリ」の「クエリ１」を選択 → エラーが出ている
→ 最初に取り込んだ時、型の変換を自動で行っていた名残が残っており、これまでの工程で列名が変更されたことによってエラーが出ています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2642886/bfef5146-f99c-d859-e921-5e32f119846a.png)

17. 「クエリの設定」→「適用したステップ」で「変更された型」を削除
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2642886/a76321ab-a0ac-27a8-2a03-e641376ebbf5.png)

18. 手動で各列の型を設定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2642886/25294f8c-8eff-acd9-1601-e516f7d229a6.png)


18. 「Source.Name」 から年を抽出 (本題と関係無いため、手順は省略します)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2642886/e8943b97-f513-4a98-e9a4-ea07aa392e08.png)

19. リボンの「ホーム」タブの「閉じて適用」を押下して取り込みを行う
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2642886/f9642236-695d-0a1d-7f80-49f6dd8edcb1.png)

20. 取り込んだあとは自由にビジュアルを作ってください
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2642886/f110fdb6-f113-2ad2-1644-6b1893ef3a57.png)

# まとめ
複数行でヘッダーが構成されている場合でも、Power Query 側で工夫して分析用データに加工することが可能です。また、フォルダ取込の場合は、ヘルパークエリの「サンプル ファイルの変換」に変換ロジックを作成できるので、こちらを加工することで、複数ファイルに対応することが可能です。今回はシンプルな構成の Excel を使用しましたが、ヘッダーの構成によっては変換手順が変わるかと思いますので、お手持ちの様々な Excel で試してみていただければと思います。