---
title: "パワークエリ（Power Query）とは？いつから使えるか・使い方の手順・結合6種と遅い原因を公式仕様で整理"
url: "https://www.issoh.co.jp/tech/details/6111/"
published: 2025-03-31
updated: 2026-10-21
categories: ["データ分析・BI"]
publisher: "株式会社一創"
---

# パワークエリ（Power Query）とは？いつから使えるか・使い方の手順・結合6種と遅い原因を公式仕様で整理

パワークエリ（Power Query）は、Excelに組み込まれているデータの取得・変換エンジンです。CSVやデータベース、フォルダー内の複数ファイルからデータを集め、不要な行の削除や型の指定、表の結合までを「手順」として記録しておけば、翌月は［すべて更新］を押すだけで同じ整形が再実行されます。Excel 2010と2013では無料アドインとして提供され、Excel 2016以降のWindows版とMicrosoft 365では標準機能になっているため、追加費用はかかりません。

この記事では、Power Queryがいつから使えるか、CSVを取り込んでシートに読み込むまでの具体的な手順、ピボット解除やフィルなど実務で使う変換、マージとアペンドの違い、そして更新が遅いときやFormula.Firewallエラーで止まったときの読み解き方を、Microsoftの公式ドキュメントの記述に沿って整理します。

## まとめ

Power Queryを使うべきかどうかは、同じ整形を繰り返す回数と、手順を組んで保守する手間の比較で決まります。毎月届くCSVの整形、支店別ファイルの結合、マスタとの突合のように手順が決まっていて繰り返す作業なら、一度組めば以後は更新ボタン1つで終わります。押さえるべき点は次の4つです。

- Windows版はExcel 2016以降とMicrosoft 365で標準搭載。Mac版はMicrosoft 365のバージョン16.69以降でエディターが使え、Excel 2016／2019 for Macには搭載されていません。
- 操作は「接続→変換→読み込み→更新」の4段階。CSVは［ファイルの元］で文字コード（932＝Shift-JIS、65001＝UTF-8）を合わせ、ID列はテキスト型にします。
- ワークシートに出せるのは1,048,576行まで。超えるなら「接続の作成のみ」とデータモデルへの追加で集計します。
- CSVとExcelファイルにはクエリの折りたたみが効かないため、更新を速くする手段は不要な列と行を早いステップで削ることです。

## パワークエリ（Power Query）とは｜保存先を持たない変換専用エンジン

Microsoftは[Power Queryの概要ページ](https://learn.microsoft.com/ja-jp/power-query/power-query-what-is-power-query)で、Power Queryを「データ変換とデータ準備エンジン」と定義しています。特徴は、Power Query自身がデータの保存先を持たない点です。公式は「Power Queryはデータを変換しますが、1 つのストレージ宛先は提供しません」と書き、結果の置き場所はPower Queryを組み込んだ製品が決めると説明しています。Excelで使えば結果はシートかデータモデルへ、Power BIで使えばPower BIのモデルへ入ります。

接続先は「ソースごとに数百のデータ ソースと 350 種類を超えるデータ変換への接続」と公式に数字が示されています。変換はステップとして記録され、更新のたびに元データへ適用されるだけで、元ファイルそのものは書き換えません。コピー＆ペーストで整形した表と違い、元データが差し替わっても手順をやり直す必要がありません。

### 「クエリと接続」ウィンドウでの取得元と変換手順の確認

クエリ（Query）は本来、データベースへの問い合わせを指す言葉です。Power Queryではこれを「どこからデータを取り、どう変換し、どう結合して、どんな表を作るか」という一連の手順の単位として使います。ブックにどんなクエリが入っているかは、［データ］タブの［クエリと接続］を開き、［クエリ］タブで一覧できます。他人から引き継いだブックで数字の出どころが分からないときは、まずこのウィンドウを開き、各クエリを右クリックして［編集］で手順を確認します。

### いつから使えるか：Excel 2010／2013向けアドインからWindows版Excel 2016の標準機能へ

Microsoftのサポート記事[「ExcelのPower Queryについて」](https://support.microsoft.com/ja-jp/excel/about-power-query-in-excel)の履歴欄と、開発チームのブログをもとに年表にすると次のとおりです。正式版の提供開始は、2013年7月8日のWorldwide Partner Conferenceでの発表に合わせたもので、コードネーム「Data Explorer」から現在の名前に変わりました（[Data Explorerチームの告知](https://learn.microsoft.com/en-us/archive/blogs/dataexplorer/data-explorer-is-now-microsoft-power-query-for-excel)）。

| 時期                       | 出来事                          |
| ------------------------ | ---------------------------- |
| Excel 2010／2013          | 無料アドインとして導入（［Power Query］タブ） |
| 2013年7月8日                | Data Explorerから改称し正式提供を発表    |
| Excel 2016／2019（Windows） | 「データの取得と変換」として標準搭載           |
| 2019年夏の初め                | Excel 2010／2013用アドインが非推奨に    |
| 2019年10月（Mac）            | 既存クエリの更新とVBAでの作成に対応          |
| 2021年1月（Mac）             | OData・SharePointからの更新に対応     |
| バージョン16.69（Mac）          | Power Queryエディターが一般提供        |
| 2025年（Web）               | 認証が必要なデータソースからの更新に対応         |

公式は「Excel 2016 および Excel 2019 for Mac では Power Query のサポートはありません」と注記しています。Macで使うなら買い切り版ではなくMicrosoft 365が前提です。Windows版のPower Queryは.NET Framework 4.7.2以降とMicrosoft Edge WebView2を実行時に使うため、古いPCで起動しないときはこの2つを先に確認します。

### Excel for Mac・Excel for the webで使える範囲

同じPower Queryでも、Windows版以外では取り込めるデータソースが絞られます。[Excel for Macのヘルプ](https://support.microsoft.com/ja-jp/excel/import-and-shape-data-in-excel-for-mac-power-query)が挙げる取り込み元は、Excelブック、テキスト／CSV、XML、JSON、SharePoint Onlineリスト、OData、空のテーブル、空のクエリで、SQL ServerデータベースはInsiderベータに限られます。この一覧にPDFとWebは含まれていないため、Windows版でPDFやWebから組んだクエリは、Macで作り直せない前提で設計します。

[Excel for the webのヘルプ](https://support.microsoft.com/ja-jp/excel/use-power-query-in-excel-for-the-web)は、クエリの表示と更新はすべてのMicrosoft 365サブスクライバーが使え、それ以上の機能はBusinessプランまたはEnterpriseプラン（E3以上）が対象だとしています。ブラウザー側でサードパーティCookieを有効にする必要もあります。さらに[バージョン別のデータソース表](https://support.microsoft.com/ja-jp/excel/power-query-data-sources-in-excel-versions)は、Web版ではデータモデルに読み込んだクエリの更新と、オンプレミス データ ゲートウェイが必要なソースの更新がサポートされていないと注記しています。個人向けプランのブラウザー利用だけを前提にすると、更新はできても編集できないという食い違いが起きます。

### Excel以外でPower Queryが動く製品

Power Queryは、デスクトップアプリ内で動く「Power Query デスクトップ」と、ブラウザーで動く「Power Query Online」に分かれます。公式の対応表から主な製品を抜き出すと次のとおりです。

| 製品                          | デスクトップ | Online | データフロー |
| --------------------------- | ------ | ------ | ------ |
| Windows の Excel             | はい     | いいえ    | いいえ    |
| Excel for Mac               | はい     | いいえ    | いいえ    |
| Power BI                    | はい     | はい     | はい     |
| Power Apps                  | いいえ    | はい     | はい     |
| Microsoft Fabric のデータファクトリー | いいえ    | はい     | はい     |

Excelで組んだ手順がPower BIでもほぼそのまま通用するのは、どちらも同じMエンジンで動いているからです。逆に、Power Query Onlineだけの機能（後述の折りたたみインジケーターや、グループ化の「個別の値をカウントする」など）はExcelから使えません。

## パワークエリでできること｜使うべき場面の見分け方

Power Queryが担うのは、データの収集から整形、統合、読み込みまでです。Excel関数や手作業と比べたときの違いは、同じ処理を何度でも同じ結果で再現できる点にあります。

| 分類     | できること                      | 手作業との違い          |
| ------ | -------------------------- | ---------------- |
| 取得     | Excel・CSV・DB・Web・PDF・フォルダー | 元データに接続したまま扱える   |
| クレンジング | 空白行の削除・表記ゆれ・0落ち防止          | 同じ補正を毎回再現できる     |
| 整形     | ピボット解除・フィル・列の分割            | 横持ち表を1ステップで縦に戻す  |
| 統合     | マージ・アペンド・ファイルの結合           | ファイルが増えても設定変更が不要 |
| 集計     | グループ化                      | 元データを残したまま集計表を作る |
| 自動化    | 開くとき・一定間隔で更新               | 貼り付け直しが不要になる     |

「何がすごいのか」を一言で言えば、整形の手順が残ることです。担当者が替わっても［適用したステップ］を上から読めば、どの列を消し、どこで型を変えたかが追えます。逆に、1回きりの集計や、セルの色で判断する作業には向きません（後述の「選ぶべきでない場面」）。

## パワークエリの使い方：CSVを取り込んで整形し、シートに読み込むまで

ここでは、基幹システムから毎月出力されるShift-JISのCSVを取り込み、商品コードの先頭の0を残したままシートに読み込む流れを例にします。Windows版Excel（Microsoft 365）の画面名で書きます。

### ①接続：［テキストまたはCSVから］と［ファイルの元］

［データ］タブ→［テキストまたはCSVから］を選び、CSVファイルを指定するとプレビュー画面が開きます。ここで最初に見るのが［ファイルの元］です。[テキスト／CSVコネクタの公式ドキュメント](https://learn.microsoft.com/ja-jp/power-query/connectors/text-csv)は「現在、文字セットは推論されず、UTF-8 は UTF-8 BOM で始まる場合にのみ推論されます」と書いており、BOMの無いファイルでは文字コードが自動では当たらないことがあります。日本の基幹システムが出すCSVで文字化けしたら、［ファイルの元］を「932: 日本語 (シフト JIS)」に、BOM無しのUTF-8なら「65001: Unicode (UTF-8)」に切り替えます。

同じ画面の［データ型検出］は、既定で最初の200行を見て型を推測します。201行目以降に初めて文字が混じる列は数値型と判定され、その行の値がエラーになります。列の中身が不揃いなCSVでは［データ型を検出しない］を選び、型は次の変換で自分で決める方が安全です。最後に［データの変換］を押すと、Power Queryエディターが開きます（［読み込み］を押すと整形せずにシートへ出ます）。

### ②変換：Power Queryエディターと「適用したステップ」

エディターは、左にクエリ一覧、中央にプレビュー、右に［適用したステップ］が並びます。列の削除、フィルター、型の変更を行うと、その操作が1つずつステップとして記録されます。商品コードの0落ちを防ぐには、コード列の見出し左のアイコンから型を［テキスト］にします。CSVをExcelで直接開くと「00123」が「123」になりますが、Power Queryで取り込みテキスト型にしておけば0は残ります。

型の自動検出が先に整数型を当てていた場合は、そのステップ（「変更された型」）を消すか、型を変えるときに出る確認ダイアログで既存のステップを置き換える方（英語版の Replace current）を選びます。新しいステップとして追加すると、すでに整数に変換されて0が落ちた値をテキストにするだけなので、0は戻りません。公式も[データ型のページ](https://learn.microsoft.com/ja-jp/power-query/data-types)で「非構造化ソースからのクエリの列データ型は、常に明示的に定義することをお勧めします」としています。

### ③読み込み：［閉じて読み込む］と読み込み先の選択肢

整形が終わったら、［ホーム］→［閉じて読み込む］で新しいシートにテーブルとして出力されます。出力先を選びたいときは［閉じて次に読み込む］を使います。開く［データのインポート］ダイアログでは、テーブル、ピボットテーブル レポート、ピボットグラフ、接続の作成のみ、の中から表示方法を選び、［このデータをデータ モデルに追加する］をオンにできます。[公式ヘルプ](https://support.microsoft.com/ja-jp/excel/create-load-or-edit-a-query-in-excel-power-query)によれば、既定ではクエリを1つ読み込むときは新しいワークシートへ、複数を同時に読み込むときはデータモデルへ入ります。

ここで効いてくるのがワークシートの上限で、1枚は1,048,576行・16,384列までです。テーブルとして読み込むと見出しに1行使うので、データ行として出せるのは最大1,048,575行です。数百万行の明細は［接続の作成のみ］＋［データ モデルに追加］で読み込み、ピボットテーブル側で集計します。「Power Queryなら大量データも扱える」という説明は、シートに出さない前提でのみ成り立ちます。読み込み先は後から変えられ、［クエリと接続］でクエリを右クリックし［読み込み先］を選び直します。

### ④更新：すべて更新・ファイルを開くときに更新・定期的に更新

翌月は元のCSVを同じ名前で置き換え、［データ］→［すべて更新］（Ctrl＋Alt＋F5）を押すだけです。自動化したい場合は、［クエリと接続］でクエリを右クリック→［プロパティ］を開きます。[接続のプロパティ](https://support.microsoft.com/ja-jp/excel/connection-properties)の［使用］タブには、［バックグラウンドで更新する］［ファイルを開くときにデータを更新する］［定期的に更新する］（間隔を分で指定）の3つがあります。

ただし、どれもExcelでブックを開いている間に動く設定です。誰もPCを開いていない夜間に更新したい場合、Power AutomateからOffice Scriptsでブックを操作しても代わりにはなりません。[Office Scriptsのトラブルシューティング](https://learn.microsoft.com/ja-jp/office/dev/scripts/testing/power-automate-troubleshooting)は、フローから実行したスクリプトではほとんどの更新メソッドが何もせず、`Workbook.refreshAllDataConnections` もソースがPower BIの場合しか更新しないと明記しています。無人の定時更新が要件なら、変換手順をPower BIのセマンティック モデルやデータフローへ移し、そちらのスケジュール更新で回す設計にします。Power AutomateでExcelを扱うときのほかの制約は[Power AutomateのExcel操作とは？テーブル必須の制約・256行の壁・調整制限から実装を設計する](/tech/details/16766/)で整理しています。

## よく使う変換レシピ｜ピボット解除・フィル・グループ化・ファイルの結合

月別の集計表を縦持ちに直す、結合セルの空欄を埋める、支店別に集計する、毎月のファイルを1つの表にまとめる、という4つの作業について、操作場所・Mの関数名・つまずく点を整理します。

| やりたいこと          | 操作                      | Mの関数                      |
| --------------- | ----------------------- | ------------------------- |
| 横持ちの月別表を縦に戻す    | ［変換］→［列のピボット解除］         | Table.UnpivotOtherColumns |
| 結合セル由来の空欄を埋める   | ［変換］→［フィル］→［下へ］         | Table.FillDown            |
| 支店別・月別に集計する     | ［ホーム］→［グループ化］           | Table.Group               |
| フォルダー内のファイルを1表に | ［データの取得］→［フォルダーから］→［結合］ | Folder.Files              |

### 月の列が増える表のピボット解除は「他の列のピボット解除」

[列のピボット解除の公式ページ](https://learn.microsoft.com/ja-jp/power-query/unpivot-column)は、操作を「列のピボット解除」「他の列のピボット解除」「選択した列のみをピボット解除する」の3つに分けています。前の2つは、更新で元表に新しい月の列が増えても、残すと決めた列以外をすべてピボット解除します。3つ目は、作成時に選んだ列だけが対象のため、翌月に増えた列はピボット解除されずに横に残ります。月が増えていく集計表では「支店」などの残す列を選んで［他の列のピボット解除］を使うのが確実です。

### フィルの前の空文字からnullへの置換

[フィルの公式ページ](https://learn.microsoft.com/ja-jp/power-query/fill-values-column)のとおり、［下へ］は上の値で null のセルを埋める操作です。Excelの結合セルは左上のセルにしか値が無いため、取り込むと残りのセルは null になりそのまま埋まりますが、CSV由来の列では空欄が null ではなく空文字になっていることがあり、その場合は埋まりません。先に［値の置換］で、検索する値を空欄のまま、置換後を null にしてからフィルを実行します。

### Excelのグループ化画面に無い「個別の値をカウントする」の代替

[グループ化の公式ページ](https://learn.microsoft.com/ja-jp/power-query/group-by)は、合計・平均・中央値・最小・最大・行のカウント・すべての行などの操作を挙げたうえで、「Count の個別の値 および Percentile 操作は、Power Query Online でのみ使用できます」と注記しています。Excelで取引先ごとの重複しない顧客数を出したいときは、先に［重複の削除］で「取引先＋顧客」の組を一意にしてから、取引先で［行のカウント］のグループ化をかけます。ピボットテーブルの［重複しない値の数］で数える方法もありますが、こちらはクエリを読み込むときに［このデータをデータ モデルに追加する］をオンにしておく必要があります。

### ファイルの結合のサンプル ファイルと列構成の確認

［フォルダーから］で取り込み［結合］を押すと、Power Queryは[ファイルの結合の公式ページ](https://learn.microsoft.com/ja-jp/power-query/combine-files-overview)のとおり、サンプル ファイル（既定では一覧の最初のファイル）を分析してコネクタを決め、「ヘルパー クエリ」グループに見本用のクエリと関数クエリを作ります。見本のファイルだけ列構成が違うと、全ファイルが誤った前提で展開されます。古い月のファイルや別様式の帳票が紛れ込む恐れがあるなら、［結合］を押す前のファイル一覧で、拡張子（Extension）やファイル名（Name）の列にフィルターをかけて対象を絞ります。［エラーのあるファイルをスキップする］が除外するのは処理中にエラーになったファイルだけで、読み込めてしまう不要なファイルは残ります。

1本のShift-JISのCSVに対して、文字コードの指定、空文字のnull化とフィル、ピボット解除、グループ化を続けて行う例をMで書くと次の形になります（フォルダー結合はヘルパー クエリが自動生成されるので、ここには含めていません）。詳細エディターで直接書く場合も、列名は大文字小文字を含めて元データと一致させます。

```
let
    ソース = Csv.Document(File.Contents("C:\data\売上_202610.csv"), [Delimiter = ",", Encoding = 932, QuoteStyle = QuoteStyle.Csv]),
    見出し = Table.PromoteHeaders(ソース, [PromoteAllScalars = true]),
    空欄をnullに = Table.ReplaceValue(見出し, "", null, Replacer.ReplaceValue, {"支店"}),
    支店を補完 = Table.FillDown(空欄をnullに, {"支店"}),
    縦持ち = Table.UnpivotOtherColumns(支店を補完, {"支店", "商品コード"}, "月", "売上"),
    型指定 = Table.TransformColumnTypes(縦持ち, {{"商品コード", type text}, {"売上", type number}}),
    支店別 = Table.Group(型指定, {"支店", "月"}, {{"売上合計", each List.Sum([売上]), type number}})
in
    支店別
```

`Encoding = 932` を省くと、[Csv.Documentの公式リファレンス](https://learn.microsoft.com/ja-jp/powerquery-m/csv-document)にある既定値「65001 (UTF-8)」で読まれ、Shift-JISのCSVは文字化けします。

## マージとアペンド：複数データの結合

複数の表をまとめる方法は2つあります。マージ（結合）は共通キーで横方向に列をつなぐ操作、アペンド（追加）は同じ構造の表を縦に積み重ねる操作です。社員IDで社員情報と勤怠をつなぐならマージ、支店別の売上表を1本にするならアペンドです。マージは「マージ用の左テーブル」と「結合用の右側のテーブル」の2つが対象なので、3つ以上をつなぐ場合は2つずつ段階的に処理します。一方[アペンド](https://learn.microsoft.com/ja-jp/power-query/append-queries)の［追加］ダイアログには、既定の「2 つのテーブル」と、任意の数のテーブルを並べられる「3 つ以上のテーブル」の2モードがあります。「Power Queryは3つ以上のテーブルを同時に結合できない」という説明を見かけますが、これはマージ側だけの制約です。

マージで失敗しやすいのは列の指定です。[マージの公式ページ](https://learn.microsoft.com/ja-jp/power-query/merge-queries-overview)は、列ヘッダーの名前は一致しなくてよいものの「ただし、列は同じデータ型である必要があることに注意してください」と注意しています。片方が数値型、もう片方がテキスト型の商品コードでは一致しません。Ctrlキーで複数列を選ぶときは左右で選ぶ順序を揃えます。アペンドの突合は位置ではなく列ヘッダーの名前で行われ、片方にしか無い列は、もう片方の行で `null` になります。

### マージの結合の種類6つと残る行の違い

マージダイアログの［結合の種類］は6種類です。うち4つはSQLのJOIN句に対応し、左アンチ結合と右アンチ結合には標準SQLに同名の句がありません（`LEFT JOIN` の結果を右側のキーが `NULL` の行に絞る書き方に相当します）。

| 結合の種類  | 結果に残る行        | 典型的な用途           |
| ------ | ------------- | ---------------- |
| 左外部結合  | 左のすべての行＋右の一致行 | マスタを引き当てて属性を付ける  |
| 右外部結合  | 右のすべての行＋左の一致行 | 右表を基準に突合する       |
| 完全外部結合 | 両方のすべての行      | 二つの名簿を突き合わせる     |
| 内部結合   | 両方で一致する行のみ    | 両方にある取引だけを残す     |
| 左アンチ結合 | 左にだけある行       | マスタ未登録のコードを洗い出す  |
| 右アンチ結合 | 右にだけある行       | 使われていないマスタ行を洗い出す |

マスタ未登録コードの点検には左アンチ結合を使います。取引明細と商品マスタを左アンチ結合すれば、マスタに存在しないコードだけが1ステップで抜き出せます。既定の左外部結合のまま進めると、突合できなかった行は右側の列が null のまま残るだけで、エラーにはなりません。月次の締めでエラー明細を探す用途なら、この1手のためにPower Queryを導入する価値があります。

### あいまい一致のしきい値の既定0.8と変換テーブルの上限0.95

「株式会社」の有無や全角・半角の違いで完全一致しないキーをつなぐには、マージダイアログの［あいまい一致を使用してマージを実行する］を使います。マージの公式ページは「あいまい一致は、テキスト列に対するマージ操作でのみサポートされます」と注記しており、数値コードや日付には使えません。

[あいまい一致の公式ページ](https://learn.microsoft.com/ja-jp/power-query/fuzzy-matching)によれば、類似性のしきい値は既定0.8で、0.00にすると任意の類似度の値が一致し、1.00では完全一致だけが許可されます。ただし公式は、あいまい一致での「完全一致」は大文字小文字・語順・句読点の違いを無視する場合があると補足しており、1.00にしても通常のマージと同じ厳密な一致にはなりません。拾えない値がある場合は0.7、0.6と下げて結果を確かめます。変換テーブル（「㈱」→「株式会社」のような対応表）を併用する場合、公式は「変換テーブルの値の最大類似性スコアは0.95です」と明記しています。しきい値を0.95より上に設定すると、変換テーブル経由の一致は成立しません。変換テーブルを使うなら、しきい値は0.95以下にします。

## Excel関数・VBA・Power Pivot・Power BI・Accessとの違い

Power Queryは他の手段と置き換わるものではなく、担当する工程が違います。

| 手段          | 担当する工程         | Power Queryとの関係            |
| ----------- | -------------- | -------------------------- |
| Excel関数     | シート上の計算・集計     | 前処理をPower Query、計算を関数に分ける  |
| VBA／マクロ     | Excel操作全般の自動化  | 定型の整形はPower Queryの方が保守しやすい |
| Power Pivot | データモデル・DAXでの集計 | Power Queryが読み込んだ表を受け取る    |
| Power BI    | 可視化・共有・定時更新    | 取り込み部分がPower Queryそのもの     |
| Access      | データの保存・入力フォーム  | Power Queryは保存先を持たない       |

Power Pivotとの混同が多いのですが、役割ははっきり分かれます。Power Queryは表を「作る」側、Power Pivotはデータモデルに入った複数の表にリレーションシップを張り、DAXの指標で「集計する」側です。Accessとどちらを使うか迷う場合は、データを入力・保存し続ける必要があるかで決めます。Power Queryには保存先が無いため、入力画面や履歴の保存が要るならAccessかデータベースの領域です。

ダッシュボード化や無人の定時更新まで進むなら、[Power BIとは？できること・料金・Excelやtableauとの違いから導入判断まで解説](/column/details/13227/)で全体像を確認し、社内でPower Platformごと設計する場合は[Power Platform（PowerApps）導入支援サービス](/service/erp%5Fcrm/power-platform/)のような外部支援も選択肢になります。VBAやOffice Scriptsとの使い分けは[Excel・Office業務の自動化｜Power Query・Officeスクリプト・Copilotの使い分け](/column/details/12825/)で比較しています。

## 更新が遅い原因：クエリの折りたたみとcontainsフィルター

更新が遅いとき最初に疑うのは、クエリの折りたたみ（query folding）が効いているかどうかです。[クエリの折りたたみの公式ページ](https://learn.microsoft.com/ja-jp/power-query/query-folding-basics)によれば、これはPower Queryが「データソース側で実行できる変換」を判定し、その処理をソースへ押し戻す仕組みで、結果は3つに分かれます。データソースがすべての変換を処理する「フル クエリ フォールディング」、一部だけをソースが処理する「部分クエリ フォールディング」、すべてを手元で処理する「クエリフォールディングなし」です。

実務上の分かれ目は、公式の「CSV ファイルやExcel ファイルなどのクエリ エンジンのないソースでは、クエリ フォールディングはサポートされていません」という一文です。CSVやExcelブックだけを相手にしている限り、折りたたみによる高速化は原理的に起きません。効くのは手順の並べ方で、[Power Queryのベストプラクティス](https://learn.microsoft.com/ja-jp/power-query/best-practices)は、フィルターをできるだけ早く適用し、並べ替えのように全行を読まないと結果を返せないコストの高い操作は最後に回すよう勧めています。

SQL Serverなどのデータベースに接続しているのに遅い場合は、折りたたみが途中のステップで切れている可能性があります。ステップを右クリックして［ネイティブ クエリの表示］が選べれば、そのステップまではSQLに変換されています。ステップ単位の折りたたみインジケーターとクエリプランは、公式が「これらの機能は、Power Query Online でのみ使用できます」としているとおりExcelでは使えません。Excelの画面上で確かめられるのは［ネイティブ クエリの表示］で、これもコネクタによっては選べません。データベース側で受け取ったSQLをSQL Server Profilerなどで見る方法もあります。

もう1つ、データモデルへの読み込みだけが極端に遅い場合の原因が公式ヘルプに載っています。テキスト列やリスト列を「指定の値を含む（contains）」でフィルターしていると、Excelが行ごとにデータセット全体を列挙し直し、マルチスレッド実行も効かなくなります。公式が挙げる回避策は「指定の値に等しい（Equals）」や「指定の値で始まる（Begins With）」への置き換えです。ただし抽出される行は変わるので、条件を変えても要件を満たせる場合に限り、置き換え後の件数を確かめてから採用します。

## Formula.Firewallエラーの読み方と直し方

複数のデータソースを組み合わせた瞬間に、次のような英語のエラーで止まることがあります。

```
Formula.Firewall: Query 'Query1' (step 'Source') references other queries or steps, so it may not directly access a data source. Please rebuild this data combination.

Formula.Firewall: Query 'Query1' (step 'Source') is accessing data sources that have privacy levels which cannot be used together. Please rebuild this data combination.
```

これはデータ プライバシー ファイアウォールによる保護です。[公式の解説](https://learn.microsoft.com/ja-jp/power-query/data-privacy-firewall)は、目的を「Power Query がソース間で意図せずにデータを漏えいするのを防ぐため」と説明しています。折りたたみによって、あるソースの値が別のソースへのクエリに埋め込まれて送られる経路があるためです。

ファイアウォールはクエリをパーティションに分け、「パーティションは、互換性のあるデータ ソースにアクセスするか、他のパーティションを参照する可能性がありますが、両方を参照することはできません」という規則を適用します。1つ目のメッセージはこの規則への違反です。2つ目はプライバシーレベルの非互換です。公式は、1つのパーティションから直接アクセスする2つのソースの間で双方向にデータを共有できるのは、両方がパブリックか、両方が組織のときだと説明しています。

直し方は2つあります。1つは、別クエリを参照するステップとデータソースへアクセスするステップを1つのクエリにまとめ、同じパーティション内で完結させる方法で、公式もこれを回避策に挙げています。もう1つは、［クエリ オプション］の［プライバシー］で「プライバシー レベルを無視する」を選ぶ方法ですが、これは保護そのものを外す操作です。外部のWebサービスに接続するクエリが1本でも含まれるブックでは選ばないでください。なお公式はこのパーティション規則が一部の製品で緩和されたと注記していますが、対象はPower BI Desktop側の設定で、Excelでは従来どおりの規則がかかります。

## M言語の基礎と、詳細エディターを開くべき場面

GUIで行った操作は、裏側でM言語（Power Query M 数式言語）のコードとして記録されます。[公式リファレンス](https://learn.microsoft.com/ja-jp/powerquery-m/)はM言語を「F# と同様に、大文字と小文字を区別する機能言語です」と定義しています。関数名を `table.selectrows` と書くと動きません。コードは［ホーム］または［表示］タブの［詳細エディター］で確認・編集できます。

```
let
    ソース = Excel.CurrentWorkbook(){[Name="売上データ"]}[Content],
    型変更 = Table.TransformColumnTypes(ソース, {{"ID", type text}}),
    絞り込み = Table.SelectRows(型変更, each [数量] > 0)
in
    絞り込み
```

構造は、`let` で各ステップを定義し、`in` で最後に返すステップを指定するだけです。ステップ名に空白や記号を含めると、`#"上位 20 行"` のような引用符付きの識別子になります。［適用したステップ］の表示名とMコード上の名前が違って見えるのはこのためです。

詳細エディターを開くべきなのは、GUIでは表現できない処理が必要になったときだけです。列名が月ごとに変わるファイルへの対応、条件によって変換を切り替える処理、同じ整形を複数のクエリで使い回す関数化が該当します。それ以外はGUIで組んだ方が速く、ステップ名として意図も残ります。M言語を最初から書いて覚えるのは遠回りです。

## パワークエリを選ぶべきでない場面

向かない用途もはっきりしています。1つ目は1回きりの整形で、手順を残す価値が無いなら、ステップを組む時間の方が高くつきます。2つ目は、シートに数百万行を出したいケースです。ワークシートの上限1,048,576行は変わらないので、この要件はPower Queryでは解けません。3つ目は、セルの色や書式を条件に判断したい処理です。Power Queryが扱うのは値であって、セルの見た目ではありません。

4つ目は、シートの追加や印刷範囲の設定など、Excelブックそのものの操作を自動化したい場合です。これはVBAや[Office Scripts（Officeスクリプト）とは？VBAとの違い・できること/できないことと使い方](/tech/details/11630/)の担当です。統計処理や機械学習まで踏み込むなら[Python in Excelの使い方｜有効化・xl()・ライブラリと制限を公式仕様で整理](/tech/details/9157/)の方法が現実的です。社内の複数システムをつなぐデータ連携そのものを作りたい場合は、Excelの外でETLやiPaaSを使う段階で、判断軸は[iPaaSとETLの違いを実装視点で判定｜連携方式5種の選定表と分岐条件](/tech/details/16495/)で整理しています。

## よくある質問

### パワークエリはいつから使えますか？

Excel 2010 for Windowsで無料アドインとして導入され、2013年7月8日にData Explorerから改称して正式提供が発表されました。Excel 2016以降のWindows版とMicrosoft 365では標準機能のため、追加インストールは不要です。Macはバージョン16.69以降のMicrosoft 365でエディターが使えます。

### パワークエリは無料で使えますか？

Excelに含まれる機能なので、Windows版のExcel 2016以降、またはMicrosoft 365のExcel（Mac版を含む）を持っていれば追加費用はかかりません。Excel 2016／2019 for Macには搭載されていません。Excel for the webでは、クエリの表示と更新はすべてのMicrosoft 365サブスクライバーが使え、それ以上の機能はBusinessプランまたはEnterpriseプラン（E3以上）が条件です。

### パワークエリとマクロ（VBA）の違いは何ですか？

Power Queryはデータの取得と整形に特化し、操作をステップとして記録します。VBAはExcelの操作全般をプログラムで自動化する仕組みです。定型のデータ整形なら、コードを書かずに手順が見えるPower Queryの方が引き継ぎや修正が容易で、シート操作や他アプリとの連携はVBAの領域になります。

### パワークエリの弱点（デメリット）は何ですか？

シートに出せるのが1,048,576行までであること、CSVやExcelファイルだけの構成ではクエリの折りたたみが効かず更新を速くしにくいこと、複数ソースを組み合わせるとFormula.Firewallエラーで止まる場合があることの3点です。Excelの［定期的に更新する］はブックを開いている間しか動かないため、無人の定時更新にはPower BIなど別の仕組みが要ります。

### ExcelのQUERY関数とパワークエリは同じものですか？

別物です。QUERY関数はGoogleスプレッドシートの関数で、Excelには同名の関数がありません。Excelでデータの取得や結合を行うときは、関数ではなくPower Query（［データ］タブの［データの取得］）を使います。Power Query側の処理を式で書くなら、シート関数ではなくM言語の関数（`Table.SelectRows` など）を詳細エディターで記述します。

## 関連記事

- [Excel・Office業務の自動化｜Power Query・Officeスクリプト・Copilotの使い分け](/column/details/12825/)
- [Office Scripts（Officeスクリプト）とは？VBAとの違い・できること/できないことと使い方](/tech/details/11630/)
- [Python in Excelの使い方｜有効化・xl()・ライブラリと制限を公式仕様で整理](/tech/details/9157/)
- [Power AutomateのExcel操作とは？テーブル必須の制約・256行の壁・調整制限から実装を設計する](/tech/details/16766/)
- [Power BIとは？できること・料金・Excelやtableauとの違いから導入判断まで解説](/column/details/13227/)

---

出典: [パワークエリ（Power Query）とは？いつから使えるか・使い方の手順・結合6種と遅い原因を公式仕様で整理](<https://www.issoh.co.jp/tech/details/6111/>)（株式会社一創）
