「Excelならすぐに書ける数式が、Power Queryではどう書けばいいかわからない」と悩んでいませんか?
VLOOKUPやIF、LEFT関数など、使い慣れたExcel関数がPower Queryのエディタ上ではそのまま使えず、作業が止まってしまうことはよくあります。しかし、その多くは難しい数式(M言語)を覚える必要はなく、マウス操作だけで完結します。
この記事では、実務で頻出するExcel関数に対応するPower Queryの「操作」と「関数」を完全網羅しました。Excelの知識をそのままPower Queryのスキルに変換し、データ加工を自動化しましょう。
【最重要】VLOOKUP関数(データの結合)はどうやる?
実務で最も使用頻度が高いVLOOKUP関数(またはXLOOKUP関数)。Power Queryでは関数を使わず、Power Queryエディターの「クエリのマージ」という機能で実現します。
手順1:クエリのマージを実行する
「ホーム」タブー「クエリのマージ」をクリックします。

VLOOKUPしたいテーブルを選択し、次に結合する列をそれぞれのテーブルで指定します。
「結合の種類」は左外部のままで問題ありません。OKをクリックします。

手順2:結合したテーブルを展開する
例では商品マスタを結合しました。商品マスタという列が追加されていますが、そのままではテーブル形式になっており、データとして活用できません。テーブルを展開する必要があります。
「商品マスタ」列の⇔ボタンをクリックします。

展開する列を必要に応じて選択します。「元の列名をプレフィックスとして使用します」にチェックが入ると、展開後の列名に「商品マスタ.商品名」といったようにテーブル名が頭に入るため、必要に応じてチェックを外しましょう。
設定が終わればOKをクリックします。

列の展開が完了しました。

これで、VLOOKUP関数を何千行もコピー&ペーストする必要はなくなります。処理速度も圧倒的に高速です。
Microsoft公式ドキュメントも参考になります。
【頻出】IF関数(条件分岐)はどうやる?
「もし〜ならA、そうでなければB」という条件分岐も、Power Queryでは直感的に設定可能です。
「条件列」機能を使えばマウス操作だけで完結
簡単な条件であれば、数式を書く必要はありません。
- 列の追加タブの「条件列」をクリックします。
- ダイアログボックスで「列名」「演算子(等しい、指定の値より大きいなど)」「値」「出力する結果」を設定します。
- 条件をさらに追加したい場合は「規則の追加」ボタンを押します。
ExcelのIF関数を入れ子(ネスト)にするよりも、視覚的にわかりやすく管理できます。
複雑な条件(AND/OR)はカスタム列で数式を書く
「AかつB」や計算式を含む条件の場合は、「カスタム列」でM言語のif式を使います。
| Excel関数 | Power Query関数 |
|---|---|
=IF(A1>=70, "合格", "不合格") | if [点数] >= 70 then “合格” else “不合格” |
ExcelのIF関数との書き方の違い
Power Queryのif文はすべて小文字で記述する必要があります。
- 〇
if ... then ... else ... - ×
IF ... THEN ... ELSE ...
また、ExcelのようにIF(条件, 真の場合, 偽の場合)というカンマ区切りではなく、thenとelseを使って文章のように記述する点が特徴です。
参考:Power Query 条件式 – Microsoft Learn
文字列操作関数の対応表と操作方法
Excelの文字列操作関数に対応するPower Queryの機能(M言語)一覧です。
多くは、対象の列を選択し、変換タブまたは列の追加タブにある「抽出」「形式」メニューから実行できます。
| Excel関数 | Power Query (M言語) | 操作 (GUI) | 備考 |
| LEFT | Text.Start([列], 文字数) | 「抽出」→「最初の文字」 | 左から指定文字数の文字を取得する |
| RIGHT | Text.End([列], 文字数) | 「抽出」→「最後の文字」 | 右から指定文字数の文字を取得する |
| MID | Text.Middle([列], 開始位置, 文字数) | 「抽出」→「範囲」 | 指定文字位置から指定文字数の文字を取得する ※開始位置は0から始まります (Excelは1から) |
| TRIM | Text.Trim([列]) | 「形式」→「トリミング」 | 先頭と末尾にある空白を削除し、単語間で2つ以上連続した空白を1つだけ残す |
| LEN | Text.Length([列]) | 「抽出」→「長さ」 | 文字の長さを取得する |
| UPPER | Text.Upper([列]) | 「形式」→「大文字」 | 小文字を大文字に変換する |
| & または CONCATENATE | | 「列のマージ」 | 文字列を結合する 数値列はテキスト型への変換が必要 |
| SUBSTITUTE | Text.Replace([列], "旧", "新") | 「値の置換」 | 値を置換する |
| MIN | List.Min([列]) | 「統計」ー「最大値」 | 指定範囲の数値の最小値を取得する |
| MAX | List.Max([列]) | 「統計」ー「最小値」 | 指定範囲の数値の最大値を取得する |
日付・時刻操作関数の対応表と操作方法
Excelの日付操作関数に対応するPower Queryの機能(M言語)一覧です。
多くは、対象の列を選択し、変換タブまたは列の追加タブにある「日付」メニューから実行できます。
| Excel関数 | Power Query (M言語) | 操作 (GUI) | 備考 |
| YEAR | Date.Year([日付列]) | 「日付」ー「年」ー「年」 | 日付から年を取得する |
| MONTH | Date.Month([日付列]) | 「日付」ー「月」ー「月」 | 日付から月を取得する |
| DAY | Date.Day([日付列]) | 「日付」ー「日」ー「日」 | 日付から日を取得する |
| EOMONTH | Date.EndOfMonth([日付列]) | 「日付」→「月」→「月末」 | Excelのように「1ヶ月後の月末」を出す場合は、先に「月を加算」を行ってから「月末」を適用 |
| NOW または TODAY | DateTime.LocalNow() | なし (カスタム列) | 現在の日付・時刻を取得する |
| DATEDIF | Duration.Days([終了日]-[開始日]) | 「日付」→「期間」→「日数」 | 日付同士を引き算するとDuration型になるため、日数に変換が必要 |
| DATE | #date(yyyy, mm, dd) | なし (カスタム列) | 年月日を引数にいれると、日付型で値を返す |
数値・その他の関数の対応表
| Excel関数 | Power Query (M言語) | 操作 (GUI) |
| ROUND | Number.Round([数値列], 桁数) | 「丸め」→「四捨五入」 |
| ROUNDDOWN | Number.RoundDown([数値列], 桁数) | 「丸め」→「切り捨て」 |
| ABS | Number.Abs([数値列]) | 「科学」→「絶対値」 |
| IFERROR | 「エラーの置換」機能を使用 | 「変換」タブ→「値の置換」→「エラーの置換」 |
まとめ
Power Queryを使う際、すべてのExcel関数をM言語で書き直す必要はありません。
- まずはリボンメニューのボタン(操作)で実現できないか探す。
- 特にVLOOKUPは「クエリのマージ」で対応する。
- 細かい文字列加工や条件分岐だけ、M言語(カスタム列)を使用する。
この優先順位を意識するだけで、学習コストは大幅に下がります。この記事の対応表をブックマークして、実務の中で少しずつ操作に慣れていってください。


