Power Query チュートリアル
Power Queryとは何か、そしてなぜそれがすべてを変えるのか
Power QueryはExcelに組み込まれたETL(抽出、変換、読み込み)エンジンです。簡単に言えば:ほぼすべてのソースからデータをインポートし、自動的にクリーニング・再整形し、ワークシートに読み込むためのツールです — すべてのステップが記録され再現可能です。毎週同じ乱雑なフォーマットで届くレポートを金曜日の午後に手動でクリーニングしたことがあるなら、Power Queryはあなたが待ち望んでいたソリューションです。
マクロとは異なり、Power Queryはコーディング不要です。ビジュアルインターフェースで変換ステップを構築し、Power QueryがバックグラウンドでM言語として記録します。翌週のファイルが届いたら、ワンクリックですべてのクリーニングステップが再適用されます。
ステップバイステップ:週次売上レポートのクリーンアップを自動化する
シナリオ:毎週月曜日にsales_YYYYMMDD.csvを受け取ります。日付形式が不統一、商品カテゴリが統合されている(1列にカテゴリ-サブカテゴリ)、売上金額が欠落している行、最下部に余分な集計行があります。これを自動的にクリーニングするPower Queryを構築します。
ステップ1 — 生データをインポートする
- データ > データの取得 > ファイルから > テキスト/CSVから。
- 売上CSVファイルを選択します。ナビゲーターがデータをプレビューします。Power Queryがすでに区切り文字とデータ型を検出していることに注目してください。
- 「読み込み」ではなくデータの変換をクリックします。Power Queryエディターが開きます — すべてのクリーニングはここで行います。
ステップ2 — ヘッダーを昇格し不要な行を削除する
- 先頭行がヘッダーの場合:ホーム > 先頭の行をヘッダーとして使用。これは常に最初に行ってください — ヘッダーにより後続ステップで列名による参照が可能になります。
- 下部の集計行を削除します。日付列をフィルター:ドロップダウンをクリックし、「合計」などのテキストや空白値を含む行のチェックを外します。または、余分な行の数が分かっている場合はホーム > 行の削除 > 下位の行の削除を使用します。
- 完全に空白の行を削除:ホーム > 行の削除 > 空白行の削除。
ステップ3 — 商品カテゴリ列を分割する
- 商品列に「Electronics-Accessories」が含まれています — カテゴリ、ハイフン、サブカテゴリです。2つの列が必要です。
- 商品列を選択します。変換 > 列の分割 > 区切り記号による分割。
- 区切り記号:カスタム、
-を入力。分割位置:左端の区切り記号(重要:一部のサブカテゴリにはハイフンが含まれます。例:「Audio-Visual」)。 - OKをクリックします。Product.1(カテゴリ)とProduct.2(サブカテゴリ)が作成されました。名前を変更:ヘッダーを右クリック > 名前の変更。
ステップ4 — 日付形式を修正し欠損値を処理する
- 日付列を選択します。変換 > データ型 > 日付。変換できない日付がある場合(エラー表示)、列のドロップダウン > エラーの置換 > フォールバックとして今日の日付を入力するか、フィルターしてそれらの行を確認します。
- 売上金額列の場合:列を選択し、変換 > 値の置換。検索する値:
null、置換後の値:0。これにより欠落した売上を空白のままではなくゼロに置き換えます。 - 売上金額が0の行が意味のないエントリである場合は削除(オプション):売上金額をフィルター > 数値フィルター > より大きい > 0。
ステップ5 — 読み込みと自動更新の設定
- ホーム > 閉じて読み込む。「テーブル」と「新しいワークシート」を選択します。OKをクリック。
- クリーニングされたデータがExcelに表示されます。自動化の設定:データ > クエリと接続(右側のペイン)。
- クエリを右クリック > プロパティ。ファイルを開くときにデータを更新するにチェックを入れます。ライブダッシュボード用にX分ごとに更新を設定することもできます。
- 翌週:新しいCSVを同じ場所に同じ名前で保存し、このワークブックを開いてデータ > すべて更新をクリックします。すべてのクリーニングステップが自動的に再実行されます。
主要テクニック
- 分析可能なデータにするためのピボット解除。データに月が別々の列(1月、2月、3月)として含まれている場合、説明列を選択して変換 > その他の列のピボット解除。ワイドテーブルがピボットテーブルに適したトールテーブルになります。
- VLOOKUPの代わりにクエリのマージ。ホーム > クエリのマージは一致する列で2つのテーブルを結合します — Power Query版のVLOOKUPですが、数百万行と複数の結合タイプ(左、右、完全外部、内部、反)を処理できます。
- 集計のためのグループ化。変換 > グループ化でカテゴリ別にデータを集計(SUM、COUNT、AVERAGE) — データがワークシートに到達する前に実行されるピボットテーブルのようなものです。
- 明確さのためのステップ名変更。「変更された型」「削除された列」「フィルターされた行」は20ステップ後には意味不明になります。ステップを右クリック > 名前の変更で内容を説明します:「空白行の削除」や「氏名の分割」など。
よくある間違い
- 不要に数百万行を読み込む。読み込む前に行をフィルターします。開発中はホーム > 行の保持 > 上位の行の保持を使用し、全データの準備ができたらフィルターを解除します。
- データ型を明示的に修正しない。Power Queryは型を推測しますが間違うことがあります。各列を選択しホーム > データ型で正しく設定します:IDはテキスト、通貨は小数、日付は日付。不適切な型はPower Queryエラーの最大の原因です。
- Power Queryが大文字小文字を区別することを忘れる。Excelの数式とは異なり、M言語とテキストフィルターは大文字小文字を区別します。大文字/小文字変換を先に適用しない限り、フィルターやマージで「ABC」は「abc」に一致しません。
- 1つのステップに変換を過度に入れ子にする。各論理変換に個別のステップを使用します。独立したステップはデバッグ、並べ替え、同僚への説明が容易です。
応用テクニック
- フォルダー内のファイルを自動結合。データの取得 > ファイルから > フォルダーから、次に結合 > 結合と変換をクリック。Power Queryがフォルダー内のすべてのファイルに変換を適用します。新しいファイルを入れて更新するだけ — 週次レポートの結合が自動化されます。
- 動的クエリのためのパラメーター。ホーム > パラメーターの管理で名前付きの値(ファイルパス、日付範囲、しきい値)を作成でき、ユーザーはクエリを編集せずに変更できます。セルフサービスレポート用にフィルターステップでパラメーターを参照します。
- Try Otherwiseによるエラー処理。変換を
try ... otherwise ...でラップ:try Date.FromText([Column]) otherwise null。1つの不良セルがクエリ全体を失敗させるのを防ぎます。