毎日送られてくるExcelファイルを開き、不要な列を削除して、列の順番を並べ替え、別シートへコピー&ペーストする――。 こうした作業を毎日繰り返していると、1回あたり数分の作業でも、1か月・1年単位では大きな時間になります。 さらに、手作業では列を消し間違える、コピー範囲がずれる、並べ替え条件を間違えるといったミスも起こりやすくなります。
そこで活用したいのが、Excelに搭載されているPower Query(パワークエリ)です。 Power Queryを使えば、「データを取り込む」「不要な列を削除する」「データ型を整える」「必要な形に並べ替える」といった一連の処理を、手順として保存できます。
一度設定してしまえば、2回目以降は元データを差し替えて更新ボタンを押すだけです。 基本的な処理であればVBAを書く必要もありません。
この記事では、Power Queryの使い方を初めて学ぶ方に向けて、テーブル化からデータ取り込み、加工、更新までの流れを順番に解説します。 さらに、Power QueryとVBAの違い、XLOOKUPとの使い分け、そしてPower Queryの裏側で動いているM言語の基本構造まで紹介します。
【結論】Power Queryは初回に設定すれば2回目以降は更新するだけ
Power Queryを理解するうえで最も重要なのは、「加工後のデータ」ではなく「加工手順を保存する仕組み」だという点です。
たとえば、毎日受け取る売上データに対して次の作業をしているとします。
- 不要な「備考」列を削除する
- 日付列を正しい日付形式にする
- 売上金額を数値として扱えるようにする
- 必要な列だけを残す
- 完成した一覧を別シートへ出力する
これらの操作を最初の1回だけPower Queryに登録しておけば、次回からは同じ操作を人が繰り返す必要がありません。
| タイミング | 作業内容 | 作業負担 |
|---|---|---|
| 初回 | データ取得、不要列削除、型変換、並べ替えなどの手順を登録する | 初期設定が必要 |
| 2回目以降 | 元データを更新し、「すべて更新」を実行する | ほぼ自動 |
Power Queryの基本的な使い方を5ステップで解説
ここからは、Excelシートにある元データをPower Queryへ取り込み、不要な列を削除し、データ型を整えて、別シートへ読み込むまでの基本操作を解説します。
ステップ1:元データをCtrl + Tでテーブル化する
まず、Power Queryへ取り込みたい元データをExcelテーブルに変換します。
元データ内の任意のセルをクリックした状態で、次のショートカットキーを押します。
Ctrl + T
「テーブルの作成」ダイアログが表示されたら、対象範囲が正しいことを確認します。 1行目に「日付」「商品コード」「商品名」「売上金額」などの見出しがある場合は、「先頭行をテーブルの見出しとして使用する」にチェックを入れます。
テーブル化しておくメリットは、データの行数が増減しても範囲を管理しやすいことです。
たとえば昨日は100行、今日は150行だったとしても、テーブルに新しいデータを追加しておけばPower Query側で扱いやすくなります。 毎日更新されるデータを扱う場合は、通常のセル範囲よりもExcelテーブルをデータ元にする方法がおすすめです。
ステップ2:「データ」→「テーブルまたは範囲から」を選択する
元データをテーブル化したら、テーブル内のセルを1つ選択した状態でExcelのリボンを操作します。
- 「データ」タブを開く
- 「テーブルまたは範囲から」をクリックする
すると、Power Query エディターが開きます。
この画面で、不要な列の削除、データ型の変更、フィルター、並べ替え、列の追加などを行います。
ここで大切なのは、Power Queryエディター上の加工が、元のExcelテーブルを直接書き換えるわけではないという点です。
Power Query側で「元データに対して、どのような加工を行うか」というルールを作成していきます。
ステップ3:不要な列を削除し「適用したステップ」を確認する
例として、元データに「備考」という不要な列があるとします。
Power Queryエディター上で「備考」列の見出しを選択し、右クリックして「削除」を実行します。
すると、画面右側にある「適用したステップ」へ新しい処理が追加されます。
たとえば次のようなステップが並びます。
- ソース
- 変更された型
- 削除された列
この「適用したステップ」がPower Queryを理解する重要ポイントです。
Power Queryは、加工後の結果だけを保存しているのではありません。 「最初にデータを取得した」「型を変更した」「この列を削除した」という処理手順を順番に保存しています。
そのため、次回データが更新されたときにも、同じ処理を同じ順番で再実行できます。
ステップ4:データ型を正しく設定する
Power Queryでは、各列にデータ型が設定されています。
見た目が同じ値でも、Power Query内部で「日付」「数値」「テキスト」のどれとして扱われているかによって、後続処理の結果が変わります。
| データ型 | 向いているデータ | 例 |
|---|---|---|
| 日付 | 受注日、売上日、入社日など | 2026/09/01 |
| 整数 | 数量、件数など | 100 |
| 10進数 | 単価、率、小数を含む数値 | 1234.56 |
| テキスト | 商品コード、社員番号、伝票番号など | 00123 |
特に注意したいのが、数字に見えるデータをすべて数値型にしないことです。
たとえば社員番号「00123」を数値型にすると、先頭の0がなくなって「123」として扱われる可能性があります。 社員番号、商品コード、郵便番号など、計算する必要のない識別番号はテキスト型として扱うのが基本です。
一方で、売上金額や数量をテキスト型にしてしまうと、合計や平均といった計算が正しく行えません。 このような列は数値型に設定します。
ステップ5:「閉じて読み込む」でExcelへ出力する
データ加工が完了したら、Power Queryエディターの「ホーム」→「閉じて読み込む」をクリックします。
通常は、加工後のデータが新しいワークシートへテーブル形式で読み込まれます。
これで初回設定は完了です。
以後は元データが変わっても、同じ削除処理や型変換を最初からやり直す必要はありません。 登録済みのクエリを更新すれば、Power Queryが同じ手順を自動で再実行します。
2回目以降はCtrl + Alt + F5で更新するだけ
Power Queryの便利さを最も実感できるのが、2回目以降の処理です。
たとえば、毎朝受け取った最新データを元テーブルへ入れ替えたとします。 その後、Excelで次のショートカットキーを押します。
Ctrl + Alt + F5
これはExcelの「すべて更新」を実行するショートカットです。
更新を実行すると、Power Queryに登録しておいた処理が再度実行されます。
- 最新の元データを読み込む
- 不要な列を削除する
- 指定した順番でデータを加工する
- 日付や数値のデータ型を設定する
- 加工結果をExcelへ読み込む
つまり、これまで毎日手で行っていた作業を、元データ更新+Ctrl + Alt + F5という流れへ置き換えられます。
Power QueryとVBAの違い|どちらを使うべき?
Power Queryを使い始めると、「これならVBAは必要ないのでは?」と感じるかもしれません。
しかし、Power QueryとVBAは同じことをするツールではありません。 それぞれ得意分野が異なるため、実務では目的に応じて使い分けるのがおすすめです。
| 比較項目 | Power Query | VBA |
|---|---|---|
| 主な用途 | データ取得・整形・変換・結合 | Excel操作全般の自動化 |
| プログラミング知識 | 基本操作ならほぼ不要 | VBAのコード記述が必要 |
| 大量データの整形 | 得意 | 可能だがコード設計が必要 |
| 複数表の結合 | 得意 | 可能 |
| セルの色や書式変更 | 不得意 | 得意 |
| PDF保存 | 基本的に対象外 | 得意 |
| メール送信 | 基本的に対象外 | 得意 |
シンプルに考えるなら、
- データを集める・整える・結合する → Power Query
- Excelそのものを操作する → VBA
という使い分けが分かりやすいです。
実務ではPower QueryとVBAを組み合わせると強力
Power QueryとVBAは、どちらか一方だけを使わなければならないわけではありません。
たとえば次のような役割分担ができます。
- Power Queryで複数ファイルを取り込み、データを整形する
- Power Queryで集計用データを作成する
- VBAで更新処理を実行する
- VBAで帳票を整える
- VBAでPDF保存やメール送信を行う
このように、Power Queryをデータ加工担当、VBAをExcel操作担当として組み合わせると、かなり高度な業務自動化が可能になります。
VBAだけで複数Excelファイルを結合する方法を知りたい場合は、以下の記事も参考にしてください。
Power Queryの「クエリのマージ」とXLOOKUPの違い
Power Queryでは、複数の表を共通するキーで結合する「クエリのマージ」という機能があります。
たとえば、売上データに「商品コード」だけが入っていて、別の商品マスターに「商品コード」「商品名」「分類」が入っているとします。
この2つを商品コードで結合すれば、売上データ側へ商品名や分類を追加できます。
ここで「それならXLOOKUPでもできるのでは?」と思う方も多いでしょう。 実際、目的によってはXLOOKUPでも同じような結果を作れます。
| 比較項目 | Power Query「クエリのマージ」 | XLOOKUP |
|---|---|---|
| 処理する場所 | Power Query内 | Excelワークシート上 |
| 大量データの定期結合 | 得意 | 数式の数が増える |
| 結果更新のタイミング | クエリ更新時 | セルの再計算時 |
| シート上に数式を残すか | 基本的に残さない | 数式として残る |
| 向いている場面 | 定期的なデータ加工・大量データの結合 | 入力内容に応じて結果を即時表示したい場合 |
たとえば、毎月5万行の売上データに商品マスターを付加する処理なら、Power Queryのクエリのマージが使いやすいでしょう。
一方、入力シートで商品コードを入力した瞬間に商品名を表示したいのであれば、XLOOKUPのほうが向いています。
XLOOKUPやINDEX/MATCHについて詳しく知りたい場合は、以下の記事で使い方や違いを解説しています。
XLOOKUP・INDEX/MATCHの使い方と違いを詳しく見る
Power QueryのM言語とは?let ~ inの基本構造
Power Queryは基本的に画面操作だけでも使えますが、実際には裏側でM言語というプログラミング言語のコードが動いています。
Power Queryエディターで「列を削除」「データ型を変更」といった操作をすると、その内容に応じたM言語コードが自動生成されます。
初心者のうちはM言語をすべて手書きできる必要はありません。 ただし、基本的なlet ~ inの構造を理解しておくと、「適用したステップ」がどのように処理されているのか理解しやすくなります。
コピペで確認できるM言語サンプル
次のコードは、現在のExcelブックにある「売上データ」という名前のテーブルを読み込み、「備考」列を削除したうえで、「日付」と「売上金額」のデータ型を設定する完全なサンプルです。
// ==================================================
// 機能:Excelテーブル「売上データ」を読み込み、
// 不要列の削除とデータ型の変更を行う
// ==================================================
let
// 現在のExcelブックから「売上データ」テーブルを取得
Source = Excel.CurrentWorkbook(){[Name="売上データ"]}[Content],
// 不要な「備考」列を削除
RemovedColumns = Table.RemoveColumns(
Source,
{"備考"}
),
// 「日付」を日付型、「売上金額」を数値型へ変換
ChangedType = Table.TransformColumnTypes(
RemovedColumns,
{
{"日付", type date},
{"売上金額", type number}
}
)
in
ChangedType
let:処理を順番に定義する
M言語では、基本的にletから処理を開始します。
letの中に、データ取得や列削除、データ型変更といったステップを順番に記述します。
今回のサンプルでは、次の3つのステップがあります。
- Source:元データを取得する
- RemovedColumns:不要な列を削除する
- ChangedType:列のデータ型を変更する
重要なのは、各処理が独立しているのではなく、1つ前のステップの結果を次のステップへ渡していることです。
たとえば「ChangedType」は、元のSourceではなく、すでに「備考」列を削除したRemovedColumnsを対象にしています。
in:最終的に返すステップを指定する
inの後ろには、最終的にPower Queryの結果として返したいステップ名を書きます。
今回のコードでは次のようになっています。
in
ChangedType
つまり、「データ型変更まで完了した結果を最終結果として返す」という意味です。
Excel.CurrentWorkbookの使い方
Excel.CurrentWorkbook()は、現在開いているExcelブック内にあるテーブルや名前付き範囲などを取得するために使用します。
サンプルコードの次の部分では、「売上データ」という名前のテーブルを指定しています。
Excel.CurrentWorkbook(){[Name="売上データ"]}[Content]
NameにはExcel側で設定されているテーブル名を指定します。
そのため、Excel側のテーブル名が「Table1」である場合に、M言語側へ「売上データ」と書いても取得できません。 名前は正確に一致させる必要があります。
Table.RemoveColumnsの使い方
Table.RemoveColumnsは、指定した列を削除するためのM言語関数です。
基本構造は次のようになります。
Table.RemoveColumns(
対象テーブル,
{"削除する列名"}
)
第1引数には処理対象となるテーブル、第2引数には削除したい列名のリストを指定します。
今回のコードでは、「備考」列を1列削除しています。
Table.TransformColumnTypesの使い方
Table.TransformColumnTypesは、指定した列のデータ型を変更するための関数です。
基本的には、対象テーブルと、変更対象となる列名・データ型の組み合わせを指定します。
今回のサンプルでは、
- 「日付」列 → type date
- 「売上金額」列 → type number
へ変更しています。
Power Queryエディターでデータ型アイコンをクリックして型を変更した場合にも、内部ではこのようなM言語コードが生成されます。
実務で使う際の注意点・エラー対策
1. 元データの列名変更に注意する
Power Queryでは、列名をもとに処理対象を指定するケースが非常に多くあります。
たとえば「売上金額」という列を数値型へ変換するクエリを作っているのに、翌月から列名が「売上額」に変更された場合、Power Queryは元の列を見つけられなくなることがあります。
同様に、「備考」という列を削除する設定をしているのに、その列自体がなくなればエラーになる可能性があります。
定期的に同じ形式のファイルを処理する場合は、可能な限り列名を固定する運用にしましょう。
2. ファイルパスやフォルダー名の変更に注意する
外部のExcelファイル、CSVファイル、フォルダーなどをPower Queryのデータ元にしている場合、保存場所が変わると更新できなくなる場合があります。
特に注意したいのは次のような変更です。
- ファイルを別フォルダーへ移動した
- フォルダー名を変更した
- ファイル名を変更した
- 共有フォルダーの構成が変更された
- ネットワークドライブの割り当てが変更された
業務で定期実行するクエリは、できるだけファイル名・保存場所・フォルダー構成を固定すると安定します。
3. Power Queryの結果表へ直接手入力しない
人が入力する情報を残したい場合は、Power Queryの出力結果とは別に入力専用テーブルを作るのがおすすめです。
たとえば、
- Power Query結果には「伝票番号」「売上金額」などを出力する
- 別テーブルに「伝票番号」「担当者コメント」を手入力する
- 伝票番号をキーにしてXLOOKUPやクエリのマージで結合する
という設計にすれば、Power Queryを更新しても手入力データを守ることができます。
4. データ型エラーが発生したら元データを確認する
たとえば「売上金額」列を数値型へ変更する設定にしているにもかかわらず、元データの一部に「未定」「なし」「-」などの文字列が入っていると、型変換エラーが発生する場合があります。
このときは、単純にエラー行を削除するのではなく、次の点を確認しましょう。
- 本来数値である列へ文字が入力されていないか
- 空欄は0なのか、それとも未入力として扱うのか
- エラーとなった行を除外してよい業務ルールなのか
- 元データ側で入力ルールを統一できないか
Power Queryで自動化するときほど、例外データをどう扱うかを事前に決めることが重要です。
まとめ|手作業を速くするよりPower Queryに手順を覚えさせよう
Power Queryの基本的な考え方は非常にシンプルです。
これまで人が毎日繰り返していた「削除する」「並べ替える」「型を整える」「貼り付ける」といった作業を、Power Queryへ処理手順として登録するだけです。
今回のポイントを整理すると、次の通りです。
- 元データはCtrl + TでExcelテーブル化する
- 「データ」→「テーブルまたは範囲から」でPower Queryへ取り込む
- 列削除などの操作は「適用したステップ」として記録される
- 日付・数値・テキストなどのデータ型を正しく設定する
- 加工後は「閉じて読み込む」でExcelへ出力する
- 2回目以降はCtrl + Alt + F5などで更新できる
- データ取得・整形・結合はPower Queryが得意
- セル操作、帳票作成、PDF保存、メール送信などはVBAが得意
- 大量データの定期的な照合にはPower Queryのマージが便利
- セル上で即座に検索結果を表示したい場合はXLOOKUPが便利
- Power Queryの出力結果へ直接手入力しない
毎日の定型作業は、人が何度も同じ操作を繰り返す必要はありません。 まずは「不要列を削除して別シートへ出力する」といった小さな処理からPower Queryへ置き換えてみてください。
一度設定した処理が更新ボタン1回で再実行されるようになると、Excel業務の考え方そのものが大きく変わります。
