「ExcelのVLOOKUPやIF関数ならわかるけど、Power Queryだとどう書けばいいかわからない…」そんな悩みを抱えていませんか?
Power Query(パワークエリ)はExcel 2016以降に標準搭載されたデータ変換ツールで、2026年3月現在、Excel業務の効率化には欠かせない存在になっています。でも、使い慣れたExcel関数とはまったく書き方が違うので、最初は戸惑う人がとても多いんです。
この記事では、Excelでよく使う10個の関数がPower Queryではどう書けるのかを、対応表+具体例つきでわかりやすくまとめました。「Power Queryを使い始めたけど、関数の変換がわからない」という方はぜひブックマークしてください。
そもそもPower Queryの「M言語」って何?
Power Queryの裏側で動いているのがM言語(正式名称: Power Query Formula Language)というプログラミング言語です。普段はGUI(マウス操作)だけで使えるので意識しなくていいのですが、「カスタム列」を追加したり、ちょっと複雑な変換をしたいときにはM言語を直接書く必要が出てきます。
ざっくり言うと、Excelの数式バー=Excel関数を書く場所、Power Queryの数式バー=M言語を書く場所と思ってください。
M言語にはExcel関数とは違ういくつかのルールがあります。
- 大文字・小文字を区別する:
Text.StartはOKだけどtext.startはエラーになる - インデックスが0始まり: Excelは1文字目を「1」と数えるけど、M言語では「0」
- 関数名が英語:
Text.Start(LEFT相当)、Text.End(RIGHT相当)のように「カテゴリ.動作」の形式
この3つを覚えておくだけで、M言語への抵抗感がグッと減りますよ。
Excel関数→Power Query(M言語)変換早見表
まずは一覧表でサクッと確認しましょう。2026年3月時点のExcel(Microsoft 365 / Excel 2021以降)とPower Queryの対応です。
| Excel関数 | Power Query(M言語) | ひとことメモ |
|---|---|---|
| IF | if 条件 then 値1 else 値2 | 全部小文字で書く! |
| VLOOKUP | 「クエリのマージ」機能(左外部結合) | 関数ではなくGUI操作で代替 |
| LEFT | Text.Start(文字列, 文字数) | 先頭からN文字を取り出す |
| RIGHT | Text.End(文字列, 文字数) | 末尾からN文字を取り出す |
| MID | Text.Middle(文字列, 開始位置, 文字数) | 開始位置は0始まりに注意! |
| LEN | Text.Length(文字列) | 文字数を返す |
| TRIM | Text.Trim(文字列) | 前後の空白を除去 |
| CONCATENATE / & | 文字列1 & 文字列2 または Text.Combine | &演算子がそのまま使える |
| UPPER / LOWER | Text.Upper(文字列) / Text.Lower(文字列) | 大文字・小文字変換 |
| SUBSTITUTE | Text.Replace(文字列, 旧, 新) | 文字列の置換 |
この表をそのままデスクの横に貼っておくと、Power Queryを使うときにサッと確認できて便利です。
特に戸惑う3つの関数を詳しく解説
1. IF関数 → if then else
ExcelのIF関数はいちばん使う関数のひとつですよね。Power Queryでもほぼ同じ感覚で使えるのですが、書き方のルールが少し違います。
Excelの場合:
=IF(A2>=100, "合格", "不合格")
Power Queryの場合(カスタム列の数式):
if [点数] >= 100 then "合格" else "不合格"
ポイントは3つあります。
if、then、elseはすべて小文字で書く(大文字だとエラー)- カッコで囲まない(Excelの
IF()とは構文が違う) - 列名は
[列名]のように角カッコで囲む
ネストする場合は if 条件1 then 値1 else if 条件2 then 値2 else 値3 のように書きます。Excelの IF(IF()) よりも読みやすいと感じる人が多いですよ。
2. VLOOKUP → クエリのマージ
ここがいちばん戸惑うポイントです。Power QueryにはVLOOKUPに相当する関数が存在しません。代わりに「クエリのマージ」という機能を使います。
要するに、2つのテーブルを共通のキー列で結合する操作です。データベースの「JOIN」と同じ考え方ですね。
手順:
- Power Queryエディターで、結合したい2つのテーブルをそれぞれ読み込む
- メニューバーの「ホーム」→「クエリのマージ」をクリック
- 結合先のテーブルを選び、共通のキー列をそれぞれクリックして選択
- 結合の種類は「左外部(最初のテーブルのすべての行と、2番目のテーブルの一致する行)」を選ぶ — これがVLOOKUPに最も近い動作
- 結合されたテーブル列の展開ボタン(⇔アイコン)をクリックして、必要な列だけ展開する
Microsoftの公式ドキュメントによると、結合の種類は全6種類ありますが、VLOOKUP的に使うなら「左外部」一択でOKです。
VLOOKUPとの大きな違いは、一度マージを設定すれば、元データが更新されても自動で反映されること。VLOOKUPのように数百行のセルに数式を入れる必要がないので、ファイルも軽くなります。
3. MID → Text.Middle(0始まりの罠)
ExcelのMID関数は「何文字目から何文字取る」を指定しますが、Power QueryのText.Middleは開始位置が0始まりです。ここを間違える人がとても多いです。
Excelの場合:
=MID(A2, 3, 4) → 3文字目から4文字取る
Power Queryの場合:
Text.Middle([列名], 2, 4) → 3文字目から4文字取る(0始まりなので「2」を指定)
つまり、Excelの開始位置から1を引いた数をPower Queryでは指定する、と覚えてください。
ちなみに、似た関数にText.Rangeもありますが、文字数が足りないとエラーになります。Text.Middleのほうがエラーになりにくいので、初心者にはText.Middleがおすすめです。
Power Queryでカスタム列を追加する手順
「早見表はわかったけど、実際にどこに数式を入れればいいの?」という方のために、カスタム列を追加する基本手順を紹介します。
- Excelでデータ範囲を選択し、「データ」タブ →「テーブルまたは範囲から」をクリックしてPower Queryエディターを開く
- メニューの「列の追加」タブ →「カスタム列」をクリック
- 「カスタム列の数式」欄に、M言語の数式を入力する(例:
if [売上] >= 10000 then "達成" else "未達") - 列名を入力して「OK」をクリック
- プレビューで結果を確認し、「ホーム」→「閉じて読み込む」でExcelシートに反映する
この流れさえ覚えれば、早見表の関数をすぐに試せます。
Excel関数とPower Query、どっちを使えばいい?
「じゃあ全部Power Queryに置き換えたほうがいいの?」と思うかもしれませんが、答えはケースバイケースです。
| こんなとき | おすすめ |
|---|---|
| 1回きりの計算・ちょっとした集計 | Excel関数 |
| 毎月同じ形式のデータを加工する | Power Query |
| VLOOKUPが数百〜数千行ある | Power Query(処理が軽い) |
| 複数のCSV・Excelファイルを結合する | Power Query一択 |
| 他の人もメンテするシート | Excel関数(Power Queryを知らない人でも扱える) |
要するに、繰り返し作業はPower Query、単発の計算はExcel関数と使い分けるのがベストです。
FAQ
Power QueryはExcelのどのバージョンから使えますか?
Excel 2016以降であれば標準搭載されています。Excel 2010・2013では無料アドインとしてインストールが必要です。Microsoft 365(旧Office 365)を使っていれば、常に最新版のPower Queryが利用可能です(2026年3月現在)。
Power Queryで書いた数式がエラーになります。何を確認すればいい?
まず大文字・小文字が正しいかを確認してください。M言語は大文字・小文字を区別するので、text.startではなくText.Startと書く必要があります。次に、列名が角カッコ[]で囲まれているかを確認しましょう。
VLOOKUPのように「見つからなかったら空白」にするにはどうすればいい?
「クエリのマージ」で左外部結合を使えば、一致しない行は自動的にnull(空白)になります。もしnullを別の値に置き換えたい場合は、該当列を右クリック→「値の置換」でnullを任意の値に変換できます。
Power Queryで作ったクエリは他の人と共有できますか?
はい、Excelファイル内にクエリが保存されるので、ファイルを共有すればそのまま使えます。ただし、データソースのパス(ファイルの保存場所)が異なる場合はエラーになることがあるので、共有フォルダのパスを使うのがおすすめです。






