Skip to content

필사 모드: Power Queryでデータ整形を自動化 — ワンクリックで更新されるレポート

日本語
0%
정확도 0%
💡 왼쪽 원문을 읽으면서 오른쪽에 따라 써보세요. Tab 키로 힌트를 받을 수 있습니다.
원문 렌더가 준비되기 전까지 텍스트 가이드로 표시합니다.

はじめに

毎月同じ作業を繰り返しているなら、この記事が役に立ちます。CSVを開き、不要な列を削除し、書式を直し、二つの表をつなぎ、ピボットを作り直す……。この工程を毎回手作業でやっているなら、時間の無駄であるだけでなく、ミスの温床でもあります。

**Power Query**は、Excel(および Power BI)に組み込まれたデータ変換ツールです。一度変換の工程を「記録」しておけば、翌月は元のファイルを差し替えて**更新**ボタンを一度押すだけで、同じ整形が自動的に適用されます。クリックで作ったすべてのステップが再実行されるからです。

この記事では、Power Queryの概念(ETL)と中心となる変換、フォルダーの結合とクエリのマージ、パラメーター、M言語の触りどころ、そして更新の自動化の限界や実務上の落とし穴まで、ステップごとに整理します。

> Power QueryはWindowsのデスクトップ版Excelで最も完全に動作し、Mac版やWeb版は機能が一部制限されます。メニューの場所は「データ」タブの「データの取得と変換」グループです。

1. Power Queryとは — ETLをクリックで

Power Queryは典型的な**ETL**(Extract, Transform, Load)ツールです。

- **Extract(抽出)**: ファイル、フォルダー、Web、データベースからデータを取り込みます。

- **Transform(変換)**: 列の整理、書式変更、分割/結合、ピボットなどの加工を行います。

- **Load(読み込み)**: 整形した結果をワークシートやデータモデルに書き出します。

肝心なのは、**すべての操作がステップとして記録される**という点です。右側の「適用したステップ」ウィンドウに変換が一つひとつ順番に積み上がり、これらのステップは更新のたびに上から下へ再実行されます。

元データ ──► [ステップ1: 列の削除] ──► [ステップ2: 書式変更]

──► [ステップ3: 分割] ──► [ステップ4: フィルター] ──► 結果テーブル

手作業で一度やれば、その手順が永久に保存されることになります。翌月のデータに差し替えれば、同じ手順がそのまま走ります。

2. データの取り込み

「データ」タブの「データの取得」から、さまざまなソースを選べます。

| ソース | 用途 |

| --- | --- |

| ファイル(ブック/CSV/テキスト) | 単一ファイルの整形 |

| フォルダー | 同じ形式の複数ファイルの結合 |

| Web | Webページの表・API応答 |

| データベース(SQL Serverなど) | 大量データへの直接接続 |

取り込みを選ぶとプレビュー画面が表示され、「データの変換」を押すとPower Queryエディターに入ります。ここからすべての加工が始まります。

3. 中心となる変換 — クリックだけで整形

Power Queryエディターでよく使う変換を整理します。すべてメニューのクリックで可能で、裏側でMコードが自動生成されます。

書式変更

各列のデータ型(テキスト、整数、日付など)を明示的に指定します。型が誤って推論されると以降の計算が狂うので、まず最初に点検すべきステップです。

列の分割と結合

- **分割**: 区切り記号(カンマ、スペースなど)や文字数を基準に、一つの列を複数の列に分けます。

- **結合**: 複数の列を区切り記号とともに一つにまとめます。

「氏名」という一つの列を「姓」と「名」に分けたり、「都道府県」と「区」をつなげて住所を作ったりする作業が、数クリックで終わります。

ピボットとピボット解除

- **ピボット**: 行の値を列見出しに展開します。

- **ピボット解除**: 複数の列を「属性・値」の二つの列に畳みます。

特に**ピボット解除**は実務で非常によく使われます。「1月、2月、3月……」のように月が横に並んだ表を、分析しやすい「月、値」という縦の形に変えてくれます。

[ ピボット形式 ] [ ピボット解除形式 ]

部署 1月 2月 部署 月 値

営業 100 120 ──► 営業 1月 100

開発 80 90 営業 2月 120

開発 1月 80

開発 2月 90

グループ化

基準となる列でまとめて、合計・平均・件数などを集計します。ピボットテーブルに似ていますが、変換パイプラインの一つのステップとして入り、更新に含まれる点が異なります。

条件列

ルールに従って新しい列の値を埋めます。たとえば、売上が一定の基準以上なら「優秀」、それ未満なら「普通」と分類するといった具合です。複雑なIFの入れ子なしに、ダイアログでルールを定義します。

4. 複数ファイルのフォルダー結合

Power Queryの真の威力は、**フォルダー結合**から生まれます。毎月同じ形式のファイルが一つのフォルダーに溜まるなら、フォルダー全体を一度に結合できます。

1. 「データの取得 → フォルダーから」でフォルダーのパスを指定

2. フォルダー内のすべてのファイル一覧が表示される

3. 「結合および変換」を押すと、サンプルファイルを基準に変換ルールが生成される

4. 同じ変換がすべてのファイルに自動的に適用され、一つの表にまとめられる

翌月のファイルをフォルダーに入れて更新するだけで、新しいファイルまで自動的に含まれます。「月別ファイルを手作業でコピー・貼り付け」していた作業が丸ごと消えます。

5. クエリのマージと追加 — 結合

追加(Append)

同じ構造の表を**縦につなげます**。1四半期と2四半期の表を合わせて上半期の表を作るといった具合です。SQLのUNIONと同じ概念です。

マージ(Merge)

キー列を基準に、二つの表を**横につなげます**。注文表に顧客表をつなげて顧客名を取り込む、SQLのJOINに当たります。結合の種類も選べます。

| 結合の種類 | 結果 |

| --- | --- |

| 左外部 | 左の全体 + 一致する右 |

| 内部 | 両方で一致する行のみ |

| 完全外部 | 両方の全体 |

VLOOKUP/XLOOKUPで一つひとつ値を引いていた作業を、マージ一度で安定して速く処理できます。

6. パラメーター — 柔軟なクエリ

パラメーターを使うと、パス、日付、しきい値といった値をクエリの外から変えられます。ファイルパスをパラメーターに切り出しておけば、別の環境でもパスだけ変えて同じクエリを再利用できます。しきい値をパラメーターにしておけば、「基準金額」を一か所で調整して、フィルター全体に反映させられます。

パラメーターは「ホーム → パラメーターの管理」で定義し、変換ステップで値の代わりにパラメーターを参照するよう指定します。

7. M言語の触りどころ

クリックで作ったすべてのステップは、実は**M言語**のコードとして保存されます。「詳細エディター」を開けば全体のコードを見られ、直接修正もできます。次は簡単な例です。

let

Source = Csv.Document(File.Contents("C:\data\sales.csv")),

Promoted = Table.PromoteHeaders(Source),

ChangedType = Table.TransformColumnTypes(Promoted, {{"Sales", Int64.Type}}),

Filtered = Table.SelectRows(ChangedType, each [Sales] > 1000)

in

Filtered

各行が「適用したステップ」一つに対応します。`let ... in` の構造の中で、ステップごとに前の結果を入力として受け取り、次の変換を定義します。普段はクリックで十分ですが、繰り返しのロジックや動的な処理が必要なときは、Mコードを直接扱うとはるかに強力になります。

8. 更新の自動化とその限界

自動更新のオプション

クエリのプロパティで次を設定できます。

- ファイルを開くときに更新

- 一定の間隔(分)ごとにバックグラウンドで更新

- 「すべて更新」(Ctrl + Alt + F5)で全クエリを一括更新

こうすれば、元データだけ更新してファイルを開くと、レポートが最新の状態に保たれます。

限界

- **完全な無人自動化は難しい**: デスクトップ版Excelの更新は、結局のところ誰かがファイルを開くか、マクロ/スケジューラーが実行する必要があります。真のサーバー側自動更新には、Power BIサービスやクラウド環境のほうが適しています。

- **パフォーマンス**: ステップが多かったりデータが大きかったりすると、更新が遅くなります。不要な列は早めに削除し、フィルターを前のステップに移すのがよいでしょう。

- **資格情報**: データベース・Webソースは、更新のたびに認証が必要になることがあります。

9. 動的配列、Python in Excelとの関係

Power Queryは「データを取り込んで整形する」段階に強いツールです。取り込んだ後の**計算・要約**は、動的配列関数(`FILTER`、`GROUPBY` など)のほうが軽く、即座に行えます。両者は競合ではなく、役割分担です。

- Power Query: 整形・統合・書式の標準化(重いETL)

- 動的配列: シート上での素早い計算・要約

- Python in Excel: Power Queryで整形したデータを受け取り、高度な統計・機械学習・可視化

典型的な流れは「Power Queryできれいな表を作り → 動的配列で要約するか、Pythonで分析」です。

10. 実務事例 — 月次レポートの自動化

毎月、支店別の売上CSVが一つのフォルダーに溜まる状況を想定してみましょう。

1. フォルダーから取り込んで、すべての支店ファイルを結合

2. 書式変更で日付・金額の書式を統一

3. 不要な列の削除、空行のフィルター

4. 条件列で売上の等級を分類

5. 顧客マスター表とマージして地域情報を付与

6. 結果をワークシートに読み込み

7. 動的配列/ピボットで要約ダッシュボードを構成

8. クエリのプロパティで「開くときに更新」を設定

翌月は、新しいCSVをフォルダーに入れてファイルを開くだけで、すべてのレポートが更新されます。一度作ったパイプラインが、毎月仕事を代わりにこなしてくれます。

11. よくある落とし穴 — データ型とロケール

- **自動の型推論を信用しない**: Power Queryが先頭の数行だけを見て型を推論し、後ろのほうで崩れることがあります。書式変更のステップを明示的に置きましょう。

- **ロケール(地域)の問題**: 日付の日/月の順序、小数点・桁区切り記号が地域ごとに異なります。「ロケールを使用して書式変更」で元データの地域を指定しないと、1月3日が3月1日に化けてしまいます。

- **列名変更への依存**: 元データの列名が変わると、以降のステップが崩れます。可能ならヘッダーの昇格の直後に、安定した名前へ変更しましょう。

- **隠れた空白・特殊文字**: 見えない空白のせいでマージ・フィルターが狂うことがあります。「クリーン」と「トリミング」の変換を序盤に適用しましょう。

- **相対パスの不在**: ファイル/フォルダーのパスが絶対パスで埋め込まれていると、別のPCで崩れます。パラメーターでパスを切り出しておくと、移植性がよくなります。

おわりに

Power Queryの価値は「一度作れば繰り返しが消える」という点にあります。手作業でやっていた整形の工程をステップとして記録しておけば、毎月の更新一度で同じ結果が得られます。ミスが減り、手順が文書化され、引き継ぎも楽になります。

最初は単一のCSV整形から始めましょう。慣れてきたらフォルダー結合とマージへ広げ、最後にパラメーターやMコードまで手を付ければ、たいていの繰り返しレポートはワンクリックで終えられます。整形はPower Query、要約は動的配列、分析はPythonと役割を分ければ、Excelは強力なデータ作業台になります。

参考資料

- [Power Queryについて (Microsoft サポート)](https://support.microsoft.com/en-us/office/about-power-query-in-excel-7104fbee-9e62-4cb9-a02e-5bfb1a6c536a)

- [Power Queryを始める (Microsoft Learn)](https://learn.microsoft.com/en-us/power-query/power-query-what-is-power-query)

- [フォルダーからファイルを取り込む (Microsoft Learn)](https://learn.microsoft.com/en-us/power-query/import-data-folder)

- [クエリのマージ (Microsoft サポート)](https://support.microsoft.com/en-us/office/merge-queries-power-query-fd157620-5470-4c0f-b132-7ca2616d17f9)

- [クエリの追加 (Microsoft サポート)](https://support.microsoft.com/en-us/office/append-queries-power-query-e42ca582-4f62-4a43-b37f-99e2b2a4ba8e)

- [列のピボットとピボット解除 (Microsoft Learn)](https://learn.microsoft.com/en-us/power-query/unpivot-column)

- [M言語仕様 (Microsoft Learn)](https://learn.microsoft.com/en-us/powerquery-m/)

- [ExcelのPython (Microsoft サポート)](https://support.microsoft.com/en-us/office/get-started-with-python-in-excel-a33fbcbe-065b-41d3-82cf-23d05397f53d)

현재 단락 (1/98)

毎月同じ作業を繰り返しているなら、この記事が役に立ちます。CSVを開き、不要な列を削除し、書式を直し、二つの表をつなぎ、ピボットを作り直す……。この工程を毎回手作業でやっているなら、時間の無駄であるだ...

작성 글자: 0원문 글자: 5,859작성 단락: 0/98