Excelを使って大量のデータを整理する際、「毎回同じ作業を繰り返している」「関数やマクロで管理が大変」という悩みを持つ人は多いです。
そんなときに役立つのが Power Query(パワークエリ) です。
Power Queryでは、データの取得・整形・結合・変換などを自動化できるだけでなく、M言語という専用の関数を使うことで、柔軟で高度なデータ処理が可能になります。
この記事では、Power Queryで使える主要な関数と、実務で役立つ応用例をわかりやすく解説します。
関数を理解することで、Excelの手作業を大幅に減らし、ミスのない効率的なデータ管理を実現できます。
Power Queryとは、ExcelやPower BIに搭載されている データ変換ツール のことです。
CSVやExcelファイル、Webデータ、データベースなど、さまざまな外部ソースからデータを取り込み、整形して分析しやすい形にすることができます。
通常、Excelでは数式(関数)をセルに書き込みますが、Power Queryでは「手順」を記録していくイメージです。
ただし、Power Queryの内部では M言語(Power Query Formula Language) が使われており、これは「関数ベース」で動作します。
つまり、
という違いがあります。
Power Queryの関数は多岐にわたりますが、大きく以下のカテゴリに分かれています。
| 分類 | 主な用途 | 代表的な関数例 |
|---|---|---|
| 数値関数 | 数値の計算・丸めなど | Number.Round, Number.Abs, Number.Power |
| テキスト関数 | 文字列操作 | Text.Upper, Text.Lower, Text.Replace, Text.Contains |
| 日付関数 | 日付の抽出・加算など | Date.AddDays, Date.Year, Date.MonthName |
| リスト関数 | 配列やリスト処理 | List.Sum, List.Distinct, List.Count |
| テーブル関数 | テーブル操作 | Table.SelectRows, Table.AddColumn, Table.Group |
| レコード関数 | レコード(行)への操作 | Record.Field, Record.AddField |
| 条件関数 | IF文など条件分岐 | if ... then ... else, Value.ReplaceType |
Excelの関数と似ていますが、Power Queryでは 列や行単位ではなく、テーブル全体に適用する ことが多い点が特徴です。
指定した文字列を別の文字に置き換える関数です。
Text.Replace([商品名], "旧", "新")
この例では、「旧」という文字を「新」に置き換えます。
Excelの SUBSTITUTE 関数と似ていますが、Power Queryではテーブル全体にまとめて適用できます。
Date.AddDays([出荷日], 7)
出荷日から7日後の「到着予定日」を算出する場合などに便利です。Date.AddMonths や Date.AddYears も同様に使えます。
Table.SelectRows(テーブル名, each [売上] > 10000)
この関数は、テーブルから条件を満たす行のみを抽出します。
SQLでいうところの「WHERE句」のような役割を果たします。
Table.AddColumn(テーブル名, "税込価格", each [価格] * 1.1)
既存の列から計算結果をもとに新しい列を作ることができます。
「税抜価格」から「税込価格」を作るような処理に最適です。
List.Distinct(テーブル名[顧客名])
顧客名のリストから重複を除いて、ユニークな一覧を取得します。
Excelの「重複の削除」よりも高速かつ再利用可能です。
Power QueryのM言語では、関数は基本的に次のような構文をとります。
関数名(引数1, 引数2, ...)
複数の関数を組み合わせることで、より高度な処理が可能です。
例として、日付列から「年月」だけを抽出するには次のように書きます。
Text.From(Date.Year([日付])) & "-" & Text.PadStart(Text.From(Date.Month([日付])), 2, "0")
この式では、
Date.Year と Date.Month で日付から年と月を取り出すText.From で文字列化するText.PadStart で月を2桁に揃える(例:03月 → “03”)という流れになっています。
例えば、毎月の売上CSVをPower Queryで取り込み、
「商品カテゴリ別の売上合計」を自動集計することができます。
手順は次の通りです。
Table.Group を使ってカテゴリごとに合計関数例:
Table.Group(テーブル名, {"カテゴリ"}, {{"売上合計", each List.Sum([売上]), type number}})
アンケートや顧客リストなどで、空白や「様」など余計な文字が混ざっている場合、
次のように簡単に整えられます。
Text.Trim(Text.Replace([氏名], "様", ""))
Text.Trim で前後の空白を除去し、Text.Replace で文字列を置き換えます。
Power Queryの最大の魅力は「更新の自動化」です。
一度関数と変換ステップを設定しておけば、
新しいデータを追加した際に「更新」ボタンを押すだけで最新データが反映されます。
Excel関数のように壊れたり、マクロのように修正が必要になることも少なく、
メンテナンス性が非常に高いのが特長です。
Power Queryの関数は多く、最初は難しく感じるかもしれません。
しかし、次の3つのポイントを意識すればスムーズに習得できます。
Text.Replace → SUBSTITUTEDate.Year → YEARList.Sum → SUMPower Query関数を理解すれば、次のような業務改善が可能になります。
これらはVBAやマクロを使わずに実現できるため、
非プログラマーでも自動化の世界に踏み込める点が魅力です。
Power Queryは、Excel作業を「手作業」から「自動化」へと進化させる強力なツールです。
その中核となるのが M言語の関数 であり、これを理解すれば、
データの整形・加工・統合・集計が劇的にスピードアップします。
最初は難しく見えても、
「ステップを記録 → 数式を見る → 少しずつ応用する」
このサイクルを繰り返すことで、確実にレベルアップできます。
日々のExcel作業にPower Queryを取り入れて、
よりスマートで正確なデータ処理を実現していきましょう。