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