【Power Query】フォルダ内のCSVを一括取り込んで自動集計する方法

この記事は約7分で読めます。

この記事で分かること

  • Power Query の「フォルダから取得」機能の使い方
  • フォルダ内の複数CSVをまとめて1つのテーブルに結合する手順
  • 毎月ファイルを追加するだけで集計が自動更新される仕組みの作り方

「毎月届く売上CSVを手でまとめてから集計している」「ファイルが増えるたびにコピペ作業が発生する」という方に向けて書いています。


どんな場面で使うか

  • 月別・部署別・設備別にファイルが分かれていて、それを毎月1つにまとめて集計している
  • システムから出力したCSVが日付ごとに1ファイルずつ保存されている
  • 複数人が送ってくる報告ファイルを1つの集計表にまとめている

この機能を使うと、ファイルを所定のフォルダに入れるだけで、次回「更新」を押したときに自動でまとめて集計されるようになります。

ただし以下の条件がある程度そろっている必要があります。

  • 各ファイルの列構成(ヘッダー名・列数)が統一されている
  • ファイル形式が同じ(CSVのみ、または Excelのみ)

基本説明

「フォルダから取得」の仕組み

通常の「ファイルから取得」は1ファイルを指定します。「フォルダから取得」はフォルダを指定することで、そのフォルダ内の全ファイルをまとめて取り込み、1つのテーブルに縦に結合します。

処理の流れは次のとおりです。

フォルダを指定
  ↓
フォルダ内のファイル一覧を取得(1ファイル=1行)
  ↓
各ファイルの中身を展開
  ↓
全ファイルの行を縦に結合して1つのテーブルにする

手順

Step 1: フォルダを準備する

取り込みたいCSVファイルをすべて1つのフォルダにまとめます。このフォルダのパスを後で Power Query に指定します。

フォルダの例:

C:\Users\山田\Documents\売上データ\
  ├── 2025年01月_売上.csv
  ├── 2025年02月_売上.csv
  └── 2025年03月_売上.csv

注意: フォルダ内にCSV以外のファイル(Excelファイルや画像)が混在していると、取り込み時にエラーが発生することがあります。CSVファイルだけを入れたフォルダを用意してください。

Step 2: 「フォルダから取得」を選択する

  1. Excel の「データ」タブ → 「データの取得」 → 「ファイルから」 → 「フォルダーから」を選択
  2. フォルダのパスを入力するか、「参照」ボタンでフォルダを選択する
  3. 「開く」をクリックするとフォルダ内のファイル一覧がプレビューされる

Step 3: ファイルを結合する

プレビュー画面の下部に「結合」「データの変換」「読み込み」のボタンが並びます。「結合」の▼から「結合と変換」を選択します。すると「ファイルの結合」ダイアログが表示されます。

ファイルの結合ダイアログ

このダイアログでは、上部の「サンプルファイル」で基準にするファイルを選び、その下の「元のファイル」で文字コード、「区切り記号」で区切り文字を指定します(右隣の「データ型検出」は既定の「最初の 200 行に基づく」のままで構いません)。下部にサンプルファイルのプレビューが表示されるので、文字化けや列のずれがないことを確認して「OK」をクリックします。

Step 4: Power Query エディターで整形する

結合が完了すると、Power Query エディターが開きます。全ファイルの行がまとめて表示されています。

Source.Name 日付 担当者 商品名 数量 売上金額
2025年01月_売上.csv 2025/01/06 田中 商品A 10 50000
2025年01月_売上.csv 2025/01/07 佐藤 商品B 5 30000
2025年02月_売上.csv 2025/02/03 田中 商品B 8 48000
2025年03月_売上.csv 2025/03/03 佐藤 商品A 11 55000

先頭に「Source.Name」という列が追加されています。これはどのファイルから来た行かを示す列です。

  • 「Source.Name」が不要な場合は削除する
  • ファイル名から「年月」などを抽出したい場合はこの列を加工する

あとは通常の整形(型変換・列名変更・フィルターなど)を行い、「閉じて読み込む」でシートに出力します。

Step 5: 毎月の更新手順

翌月のCSVファイルを同じフォルダに追加した後、Excel の「データ」タブ →「すべて更新」をクリックするだけで新しいファイルの行が取り込まれ、集計が更新されます(ショートカットは Ctrl + Alt + F5)。


サンプル例

月別売上CSVを3ヶ月分まとめて集計する例です。

記事末尾からダウンロードできるサンプルは3ファイルとも UTF-8 です。ファイル名は本文の例(2025年01月_売上.csv)とは違うので、Step 4 の Source.Name 列にはダウンロードしたファイル名がそのまま表示されます。

各CSVの形式(共通):

日付,担当者,商品名,数量,売上金額
2025/01/06,田中,商品A,10,50000
2025/01/07,佐藤,商品B,5,30000

Power Query での整形手順:

  1. フォルダからCSVを結合(Step 1〜4)
  2. Source.Name 列を削除(ファイル名が不要な場合)
  3. 日付 列の型を「テキスト」→「日付」に変換
  4. 数量売上金額 列の型を「テキスト」→「整数」に変換
  5. 「閉じて読み込む」でシートに出力

出力されたテーブルをピボットテーブルの元データにすれば、毎月ファイルを追加して「更新」するだけで集計表も自動更新されます。


よくあるエラー

ファイルの列数や列名が月によって違う

Power Query がどの列をどの順で読むかは最初のサンプルファイルを基準にします。途中で列が増減したり名前が変わったりすると結合がうまくいかず、エラーが出たり null が大量に発生したりします。

対策: 各CSVの列構成を統一してください。どうしても列名が違う場合は、Power Query エディター内でカスタム変換を追加することで対応できますが、難易度が上がります。

文字化けする

フォルダ内のCSVの文字コードが統一されていない場合に起きやすいです。「ファイルの結合」ダイアログのプレビューで文字化けが確認できたら、「元のファイル」で文字コードを切り替えてください(日本語のCSVでは 65001: Unicode (UTF-8)932: 日本語 (シフト JIS) のどちらかであることがほとんどです)。

「データの変換」から手動でコードを指定することもできます。Power Query エディターで対象のクエリの「適用したステップ」にある「ソース」ステップをクリックし、詳細設定で Encoding=932(Shift-JIS)または Encoding=65001(UTF-8)を指定します。

フォルダ内にCSV以外のファイルが混入している

.csv 拡張子のファイルだけを対象にするフィルターを追加します。Power Query エディターで「適用したステップ」→「フィルターされた非表示のファイル1」あたりのステップの後に、「Extension」列でフィルター(.csv のみ)を追加します。


まとめ

  • 「フォルダから取得」を使うと、フォルダ内の全CSVを1つのテーブルに結合できる
  • 設定後は新しいファイルをフォルダに入れて「更新」するだけで集計が再実行される
  • 列構成(ヘッダー名・列数)が統一されていることが前提条件

手作業でコピペをしていた時間が大幅に短縮されます。次の記事では、取り込んだデータの「汚れ」を整えるデータクレンジングの方法を説明します。


関連記事


対応バージョン: Excel 2016 以降(Microsoft 365 推奨)

サンプルファイル

記事中で使用しているサンプルデータはこちらからダウンロードできます。

タイトルとURLをコピーしました