MENU
カテゴリー

【Power Query入門】VBA不要!更新ボタン1回でデータ集計を全自動化する超基本

毎日送られてくる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の重要ポイント: 最初に「何をどう加工するか」を設定しておけば、その手順を何度でも再実行できます。 毎日の定型作業を「人が繰り返す作業」から「Excelに再実行させる処理」へ変えられるのがPower Queryの大きなメリットです。

Power Queryの基本的な使い方を5ステップで解説

ここからは、Excelシートにある元データをPower Queryへ取り込み、不要な列を削除し、データ型を整えて、別シートへ読み込むまでの基本操作を解説します。

ステップ1:元データをCtrl + Tでテーブル化する

まず、Power Queryへ取り込みたい元データをExcelテーブルに変換します。

元データ内の任意のセルをクリックした状態で、次のショートカットキーを押します。

Ctrl + T

「テーブルの作成」ダイアログが表示されたら、対象範囲が正しいことを確認します。 1行目に「日付」「商品コード」「商品名」「売上金額」などの見出しがある場合は、「先頭行をテーブルの見出しとして使用する」にチェックを入れます。

テーブル化しておくメリットは、データの行数が増減しても範囲を管理しやすいことです。

たとえば昨日は100行、今日は150行だったとしても、テーブルに新しいデータを追加しておけばPower Query側で扱いやすくなります。 毎日更新されるデータを扱う場合は、通常のセル範囲よりもExcelテーブルをデータ元にする方法がおすすめです。

注意: 元データの途中に完全な空白行や空白列がある場合、意図しない範囲でテーブルが作成されることがあります。 基本的には1行目を見出し、2行目以降を明細というシンプルな表形式に整えておきましょう。

ステップ2:「データ」→「テーブルまたは範囲から」を選択する

元データをテーブル化したら、テーブル内のセルを1つ選択した状態でExcelのリボンを操作します。

  1. 「データ」タブを開く
  2. 「テーブルまたは範囲から」をクリックする

すると、Power Query エディターが開きます。

この画面で、不要な列の削除、データ型の変更、フィルター、並べ替え、列の追加などを行います。

ここで大切なのは、Power Queryエディター上の加工が、元のExcelテーブルを直接書き換えるわけではないという点です。

Power Query側で「元データに対して、どのような加工を行うか」というルールを作成していきます。

ステップ3:不要な列を削除し「適用したステップ」を確認する

例として、元データに「備考」という不要な列があるとします。

Power Queryエディター上で「備考」列の見出しを選択し、右クリックして「削除」を実行します。

すると、画面右側にある「適用したステップ」へ新しい処理が追加されます。

たとえば次のようなステップが並びます。

  • ソース
  • 変更された型
  • 削除された列

この「適用したステップ」がPower Queryを理解する重要ポイントです。

Power Queryは、加工後の結果だけを保存しているのではありません。 「最初にデータを取得した」「型を変更した」「この列を削除した」という処理手順を順番に保存しています。

そのため、次回データが更新されたときにも、同じ処理を同じ順番で再実行できます。

覚えておきたいポイント: Power Queryで操作を間違えた場合は、Excelの元データから作り直す必要はありません。 右側の「適用したステップ」から不要なステップを削除したり、設定を修正したりできます。

ステップ4:データ型を正しく設定する

Power Queryでは、各列にデータ型が設定されています。

見た目が同じ値でも、Power Query内部で「日付」「数値」「テキスト」のどれとして扱われているかによって、後続処理の結果が変わります。

データ型 向いているデータ 例
日付 受注日、売上日、入社日など 2026/09/01
整数 数量、件数など 100
10進数 単価、率、小数を含む数値 1234.56
テキスト 商品コード、社員番号、伝票番号など 00123

特に注意したいのが、数字に見えるデータをすべて数値型にしないことです。

たとえば社員番号「00123」を数値型にすると、先頭の0がなくなって「123」として扱われる可能性があります。 社員番号、商品コード、郵便番号など、計算する必要のない識別番号はテキスト型として扱うのが基本です。

一方で、売上金額や数量をテキスト型にしてしまうと、合計や平均といった計算が正しく行えません。 このような列は数値型に設定します。

重要: Power Queryのエラー原因として非常に多いのがデータ型の不一致です。 日付は日付型、計算する数値は数値型、コード類はテキスト型という基本を意識しましょう。

ステップ5:「閉じて読み込む」でExcelへ出力する

データ加工が完了したら、Power Queryエディターの「ホーム」→「閉じて読み込む」をクリックします。

通常は、加工後のデータが新しいワークシートへテーブル形式で読み込まれます。

これで初回設定は完了です。

以後は元データが変わっても、同じ削除処理や型変換を最初からやり直す必要はありません。 登録済みのクエリを更新すれば、Power Queryが同じ手順を自動で再実行します。

2回目以降はCtrl + Alt + F5で更新するだけ

Power Queryの便利さを最も実感できるのが、2回目以降の処理です。

たとえば、毎朝受け取った最新データを元テーブルへ入れ替えたとします。 その後、Excelで次のショートカットキーを押します。

Ctrl + Alt + F5

これはExcelの「すべて更新」を実行するショートカットです。

更新を実行すると、Power Queryに登録しておいた処理が再度実行されます。

  1. 最新の元データを読み込む
  2. 不要な列を削除する
  3. 指定した順番でデータを加工する
  4. 日付や数値のデータ型を設定する
  5. 加工結果をExcelへ読み込む

つまり、これまで毎日手で行っていた作業を、元データ更新+Ctrl + Alt + F5という流れへ置き換えられます。

実務での考え方: Power Queryでは「毎日の作業時間を短くする」だけでなく、毎日同じルールで処理されるため、手作業によるばらつきを減らせることも大きなメリットです。

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は、どちらか一方だけを使わなければならないわけではありません。

たとえば次のような役割分担ができます。

  1. Power Queryで複数ファイルを取り込み、データを整形する
  2. Power Queryで集計用データを作成する
  3. VBAで更新処理を実行する
  4. VBAで帳票を整える
  5. VBAでPDF保存やメール送信を行う

このように、Power Queryをデータ加工担当、VBAをExcel操作担当として組み合わせると、かなり高度な業務自動化が可能になります。

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つのステップがあります。

  1. Source:元データを取得する
  2. RemovedColumns:不要な列を削除する
  3. 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列削除しています。

注意: 元データの「備考」という列名が「コメント」などへ変更されると、Power Queryが削除対象の列を見つけられずエラーになることがあります。

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の出力結果とは別に入力専用テーブルを作るのがおすすめです。

たとえば、

  • 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業務の考え方そのものが大きく変わります。

関連記事

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

こんにちは、「現場のVBA・SQL実践ラボ」を運営しているFaustです。

普段はシステム系の会社員として働きながら、Excel・VBA・Access・SQL・データベースを活用した業務効率化やデータ処理について学び、実務で役立つ方法を中心に情報を発信しています。

仕事をしていると、

「毎日同じExcel作業を繰り返している」
「大量のデータをもっと効率よく処理したい」
「VBAを使って業務を自動化したい」
「AccessやSQLを使いたいけれど、どこから勉強すればいいか分からない」

といった悩みにぶつかることがあります。

このサイト「現場のVBA・SQL実践ラボ」では、そうした実務の悩みを解決するために、Excel VBAによる業務自動化をはじめ、Access、SQL、リレーショナルデータベース、データ集計・加工・検索などについて、できるだけ分かりやすく解説しています。

難しい専門用語を並べるだけではなく、「なぜこのコードを書くのか」「実際の仕事ではどのように使うのか」まで理解できる記事を目指しています。

VBAやSQLをこれから学びたい初心者の方はもちろん、すでに仕事でExcelやAccessを使っていて、

「もっと作業を自動化したい」
「処理速度を上げたい」
「ミスを減らしたい」
「大量データを効率よく扱えるようになりたい」

という方にも役立つサイトにしていきたいと考えています。

Excel・VBA・Access・SQL・データベースを「知識」で終わらせず、実際の現場で使えるスキルへ。

日々の面倒な作業を少しずつ自動化し、より効率よく仕事ができるようになるための実践的な情報をお届けしていきます。

目次