Excelの月次集計を自動化する方法|Power QueryとPythonで同じCSVを集計して比べる演習【サンプル付き】

※本サイト・記事にはPRが含まれています
Excelの月次集計を自動化する方法|Power QueryとPythonで同じCSVを集計して比べる演習【サンプル付き】

毎月の売上や経費の集計を、Excelで手作業で続けている方は多いのではないでしょうか。

CSVを開いて、コピーして、貼り付けて、ピボットテーブルを作り直す…という作業です。

 

「月次集計を自動化したいけど、Power QueryとPythonのどっちがいいの?」

「自動化したあと、数字が合っているかどうやって確かめればいいの?」

 

どちらも名前はよく聞くので、迷ってしまいますよね。

この記事では、同じ2か月分のCSVを、Power QueryとPythonの両方で集計して比べる演習をご紹介します。

結果は、行数・除外した行・合計金額の3つで照らし合わせます。

読み終えるころには、自分の職場に合うのはどちらか、翌月からどう回せばいいかがわかるはずです。

演習用のサンプルデータも載せているので、ぜひ手を動かしながら読んでみてください!

先に結論|Power QueryとPythonの違い

まずは、2つの違いを表にまとめました。

項目Power QueryPython(pandas)
使う場所Excelの中([データ]タブ)Excelの外(コードを実行)
準備Windows版のExcelがあればすぐ使えるPythonとpandasのインストールが要る
作り方画面の操作を記録していくコードを書く
翌月の更新フォルダーにCSVを置いて[すべて更新]フォルダーにCSVを置いて再実行
引き継ぎExcelを使える人なら触りやすいコードを読める人が必要
得意なこと集計結果をそのままExcelで使う複雑な条件、大量のファイル、ほかの処理との組み合わせ

迷ったら、Excelで完結する仕事はPower Query、Excelの外にも広げたいならPythonと考えるのがおすすめです。

ただ、表だけではピンとこないと思うので、実際に同じデータで比べてみましょう。

演習の準備|2か月分のサンプルCSV(例)

演習では、文房具を売るお店の売上データを使います。

ここで使うCSVは、演習のために作った架空のサンプルデータです。実在のお店や数字ではありません。

フォルダーとファイルの形

パソコンの中に「monthly_sales」というフォルダーを作り、次の2つのCSVを保存してください。

  • sales_2026-10.csv(10月分)
  • sales_2026-11.csv(11月分)

ファイル名に年月を入れておくと、あとで月ごとに集計しやすくなります。

文字コードは、UTF-8で保存してください。

sales_2026-10.csv(例)

注文日,店舗,商品,数量,単価,金額,状態
2026-10-01,本店,ノート,3,250,750,完了
2026-10-02,駅前店,ボールペン,10,120,1200,完了
2026-10-05,オンライン,ファイル,4,300,1200,完了
2026-10-08,本店,ボールペン,5,120,600,キャンセル
2026-10-12,駅前店,ノート,6,250,1500,完了
2026-10-15,オンライン,ノート,2,250,500,完了
2026-10-19,本店,ファイル,5,300,1500,完了
2026-10-22,駅前店,ファイル,2,300,600,キャンセル
2026-10-26,オンライン,ボールペン,8,120,960,完了
2026-10-30,本店,ノート,4,250,1000,完了

sales_2026-11.csv(例)

注文日,店舗,商品,数量,単価,金額,状態
2026-11-02,本店,ボールペン,6,120,720,完了
2026-11-04,オンライン,ノート,5,250,1250,完了
2026-11-06,駅前店,ファイル,3,300,900,完了
2026-11-09,本店,ファイル,2,300,600,完了
2026-11-11,駅前店,ボールペン,12,120,1440,完了
2026-11-14,オンライン,ファイル,1,300,300,キャンセル
2026-11-18,本店,ノート,7,250,1750,完了
2026-11-21,オンライン,ボールペン,9,120,1080,完了
2026-11-25,駅前店,ノート,4,250,1000,完了
2026-11-28,本店,ボールペン,3,120,360,完了

この演習のゴール

2つのCSVをまとめ、キャンセルの行を除いて、月ごと・店舗ごとの売上合計を出します。

答え合わせのために、先に「正しい数字」を決めておきましょう。

確認する項目正しい数字
読み込んだ行数20行(10行×2ファイル)
除外する行(キャンセル)3行
集計に使う行17行
売上合計(キャンセルを除く)17,710円
集計結果の行数(2か月×3店舗)6行

自動化で一番大事なのは、作り方よりも「合っているかを確かめる数字」を先に決めることです。

Power Queryで集計する手順

ここからは、Windows版のExcel(Microsoft 365)で操作する前提で進めます。

Mac版のExcelは、Power Queryで読み込める元データの一覧に「フォルダー」がありません。

Macの方は、後半のPythonの手順を試してみてください。

出典|Microsoft サポート(Excel for Mac でデータをインポートおよび整形する)

STEP1:フォルダーごと読み込む

新しいブックを開き、[データ]タブから[データの取得]を選びます。

続けて[ファイルから]、[フォルダーから]の順に選び、「monthly_sales」フォルダーを指定します。

フォルダーの中のファイルの一覧が出たら、2つのCSVが並んでいるか確かめてください。

STEP2:ファイルを結合する

一覧の画面の下にある[結合]から、[結合と変換]を選びます。

[ファイルの結合]の画面が開いたら、次の3つを確かめて[OK]を選びます。

  • [サンプル ファイル]:最初のファイルのままでOK
  • [ファイルの元]:UTF-8になっているか
  • [区切り記号]:コンマになっているか

出典|Microsoft サポート(複数のファイルを含むフォルダーをインポートする)

Power Queryエディターが開き、2つのCSVが縦につながった表が表示されます。

一番左には「Source.Name」という列ができて、どのファイルの行かがわかるようになっています。

 

日本語が文字化けしていたら、どうすればいいの?

 

その場合は、CSVの文字コードと[ファイルの元]の設定が合っていない可能性があります。

社内のシステムから出したCSVは、Shift_JISのこともあるので、元のファイルを確かめてみましょう。

STEP3:行数と除外する行を確かめる

集計する前に、読み込んだ行数を確かめます。

[表示]タブで[列のプロファイル]をオンにして、「状態」の列を選んでください。

画面の下に、列の統計と値の分布が表示されます。

ここで、列の統計の件数が20、値の分布で「キャンセル」が3、「完了」が17ならOKです。

※既定では、上位1,000行をもとに表示されます。データが多いときは、画面の左下で全体に切り替えてください。出典|Microsoft Learn(データ プロファイル ツール)

「Source.Name」の列のフィルターを開いて、2つのファイル名が両方あるかも確かめておきましょう。

STEP4:キャンセルを除外する

「状態」の列見出しにある▼のアイコンを選びます。

一覧の「キャンセル」のチェックを外して、[OK]を選びます。

これで、キャンセルの3行が集計から外れます。

STEP5:月ごと・店舗ごとに集計する

[ホーム]タブの[グループ化]を選び、[詳細設定]に切り替えます。

1つ目のグループに「Source.Name」を選び、[グループ化の追加]で「店舗」を足します。

集計は、次の2つを設定します。

新しい列名操作列
件数行のカウント(指定なし)
売上合計合計金額

出典|Microsoft Learn(行をグループ化または集計する)

[OK]を選ぶと、ファイル(月)と店舗の組み合わせごとに、6行の表ができます。

STEP6:Excelに読み込む

[ホーム]タブの[閉じて読み込む]を選ぶと、集計結果が新しいシートに表として出てきます。

画面の右の[クエリと接続]に、読み込んだ行数(6行)が表示されているかを確かめましょう。

最後に、売上合計の列を足して、17,710円になっていれば完成です。

Pythonで集計する手順

次は、同じCSVをPythonで集計します。

PythonはWindowsでもMacでも動くので、Macの方はこちらから試してみてください。

準備:Pythonとpandasを入れる

Python 3をインストールしたら、表のデータを扱うライブラリのpandasを入れます。

pip install pandas

この記事のコードは、pandas 2.3.3で動くことを確かめています。

コード:まとめて、除外して、集計する

「monthly_sales」フォルダーと同じ場所に、次の内容で「monthly_report.py」を保存します。

from pathlib import Path
import pandas as pd

folder = Path("monthly_sales")  # CSVを置いたフォルダー

frames = []
for path in sorted(folder.glob("sales_*.csv")):
    df = pd.read_csv(path, encoding="utf-8-sig")
    df["ファイル名"] = path.name
    frames.append(df)
    print(f"{path.name}: {len(df)}行")

data = pd.concat(frames, ignore_index=True)
print(f"読み込み合計: {len(data)}行")

# 金額 = 数量 × 単価 になっていない行がないか確かめる
bad = data[data["金額"] != data["数量"] * data["単価"]]
print(f"金額が合わない行: {len(bad)}行")

# キャンセルを除外する
done = data[data["状態"] != "キャンセル"]
print(f"除外: {len(data) - len(done)}行 / 残り: {len(done)}行")

# ファイル名(=月)× 店舗で集計する
report = (
    done.groupby(["ファイル名", "店舗"], as_index=False)
    .agg(件数=("金額", "size"), 売上合計=("金額", "sum"))
)
print(report.to_string(index=False))
print(f"売上合計(全体): {done['金額'].sum():,}円")

report.to_csv("monthly_report.csv", index=False, encoding="utf-8-sig")

途中で行数を表示しているのは、Power QueryのSTEP3と同じ確認をするためです。

さらに、金額が「数量×単価」と合っているかも確かめています。

実行と結果

ターミナル(Windowsならコマンドプロンプトなど)で、次のように実行します。

python monthly_report.py

次のように表示されれば成功です。

sales_2026-10.csv: 10行
sales_2026-11.csv: 10行
読み込み合計: 20行
金額が合わない行: 0行
除外: 3行 / 残り: 17行
            ファイル名    店舗  件数  売上合計
sales_2026-10.csv オンライン   3  2660
sales_2026-10.csv    本店   3  3250
sales_2026-10.csv   駅前店   2  2700
sales_2026-11.csv オンライン   2  2330
sales_2026-11.csv    本店   4  3430
sales_2026-11.csv   駅前店   3  3340
売上合計(全体): 17,710円

同じ場所に「monthly_report.csv」もできるので、Excelで開いて使えます。

※環境によっては「python」ではなく「python3」や「py」で実行します。

結果を比べる|行数・除外・合計の3つで照らし合わせる

Power QueryとPythonの結果を、最初に決めた「正しい数字」と並べてみましょう。

確認する項目正しい数字Power Queryで見る場所Pythonで見る場所
読み込んだ行数20行列のプロファイル(STEP3)読み込み合計
除外する行3行値の分布の「キャンセル」除外
集計に使う行17行値の分布の「完了」残り
集計結果の行数6行クエリと接続表の行数
売上合計17,710円売上合計の列の合計売上合計(全体)

店舗ごとの数字は、どちらでも次のようになります。

月店舗件数売上合計
10月本店33,250円
10月駅前店22,700円
10月オンライン32,660円
11月本店43,430円
11月駅前店33,340円
11月オンライン22,330円

※架空のサンプルデータを集計した結果です。

表の並び順は、Power QueryとPythonで違うことがあります。

並び順が違っても、行数・除外・合計の3つが合っていれば、同じ集計ができていると判断できます。

逆に、どれか1つでもずれたら、ファイルの読み込み漏れや、除外の条件の違いを疑いましょう。

どちらを選ぶ?職場に合わせた選び方

同じ結果が出ることがわかったら、あとは職場に合うかどうかで選びます。

Power Queryが向いている人

  • 集計結果を、そのままExcelのグラフや報告書に使う
  • 集計の担当を、ほかの人に引き継ぐ可能性がある
  • パソコンに新しいソフトを入れにくい職場で働いている

Pythonが向いている人

  • Macを使っている、またはExcelを持っていない
  • ファイルの数が多い、条件が複雑になりそう
  • いずれはグラフ作りや分析まで、Pythonで広げたい

同じCSVで次に試せるPythonの課題は、こちらで紹介しています。

なお、Power Queryの操作は、Power BIでもほぼ同じ形で使えます。

Power BIまで学びたい方は、次の記事で講座と資格の違いを解説しています。

https://d-cubed-lab.com/coursera-microsoft-power-bi-data-analyst

翌月の更新メモ|来月からはここだけ確認する

自動化は、作ったあとに毎月回せてこそ意味があります。

12月分のCSVが届いたときを例に、更新の手順をまとめました。

Power Queryの場合

  • sales_2026-12.csv を、同じ「monthly_sales」フォルダーに保存する
  • Excelを開き、[データ]タブの[すべて更新]を選ぶ(Ctrl+Alt+F5でも可)
  • [クエリと接続]の行数が増えたか確かめる(12月も3店舗とも売上があれば9行)
  • 前月までの売上合計が変わっていないか確かめる

Pythonの場合

  • sales_2026-12.csv を、同じ「monthly_sales」フォルダーに保存する
  • python monthly_report.py をもう一度実行する
  • 読み込み合計が、12月分の行数だけ増えたか確かめる
  • 除外の行数と、売上合計(全体)を前月のメモと比べる

出典|Microsoft サポート(Excel で外部データ接続を更新する)

どちらの場合も、次の3つは崩さないようにしてください。

  • ファイル名の付け方(sales_年-月.csv)
  • 列の名前と並び順
  • 文字コード(UTF-8)

また、フォルダーには、集計するCSVだけを置きましょう。

Microsoftの案内でも、フォルダーに結合するファイルだけが入っていることが前提とされています。

出典|Microsoft Learn(CSV ファイルを結合する)

毎月の確認の数字は、次のような表にメモしておくと、ずれにすぐ気づけます。

月読み込んだ行数除外した行集計に使った行売上合計
10月10行2行8行8,610円
11月10行1行9行9,100円
12月(記入)(記入)(記入)(記入)

※架空のサンプルデータの数字です。

Courseraで、Power QueryやExcelの分析を学ぶなら

演習をやってみて、もっと体系的に学びたくなった方もいるでしょう。

オンライン学習サービスのCoursera(コーセラ)には、ExcelのPower Queryを学べる講座があります。

講座提供レベル期間の目安主な内容
Excel Power Tools for Data Analysisマッコーリー大学中級週10時間で2週間Power Query、Power Pivot、Power BI
Excel Skills for Business(専門講座)マッコーリー大学初級週10時間で3か月Excelの基本から応用まで(4コース)

出典|Coursera(Excel Power Tools for Data Analysis)、Coursera(Excel Skills for Business)

この記事の内容に近いのは、Excel Power Tools for Data Analysisです。

4つのモジュールのうち、2つがPower Queryでのデータの取り込みと変換にあてられています。

講座はWindows版のExcel 2016以降が前提で、Microsoft 365での受講がすすめられています。

Excelの操作そのものに自信がない方は、Excel Skills for Businessから始めるのがおすすめです。

CourseraでExcel Skills for Businessを見る

どちらも英語の講座ですが、字幕の言語には日本語が含まれています。

まとめ|まずは「確かめる数字」を決めてから自動化しよう

Excelの月次集計は、Power QueryでもPythonでも自動化できます。

どちらを使っても、行数・除外・合計の3つを決めて確かめれば、安心して毎月回せます。

この記事のポイントをおさらいしておきましょう。

  • 同じCSVなら、Power QueryとPythonで同じ集計結果になる
  • Power Queryは[フォルダーから]読み込み、[すべて更新]で翌月分を足せる
  • PythonはMacでも動き、確認の数字を毎回表示できる
  • 行数・除外した行・合計の3つで照らし合わせる
  • ファイル名、列の並び、文字コードを毎月そろえる

 

「自分の職場のCSVでもうまくいくかな…」

 

という方も、まずはこの記事のサンプルCSVで一度動かしてみてください。

当サイトは第三者配信の広告サービス(Googleアドセンス、A8.net、もしもアフィリエイト、Linksahre、バリューコマース、afb、レントラックス、Amazonアソシエイト、楽天アフィリエイト、Adobe アフィリエイト、Wix アフィリエイト、Coursera Affiliate Program)を利用し、紹介料などの収益を得ています。収益はサイト閲覧体験の改善費用やより有益な情報提供のための取材費用に使用されます。

人気記事

CourseraとUdemyはどちらがおすすめ?統合後の違いや料金、選び方を徹底比較【2026年版】 1

オンラインで学び直しをするなら、Coursera(コーセラ)とUdemy(ユーデミー)は外せない選択肢です。 2026年5月には、この2社が統合して1つの会社になりました。 とはいえ、いざ使おうとする ...

JADP認定資格は意味ない?怪しい?キャリカレの評判と、取る価値がある人・ない人を正直に解説 2

資格のキャリカレは、自宅で学べる通信講座として、160講座以上をそろえる人気のサービスです。 その講座の多くで目指せるのが、JADP(日本能力開発推進協会)が認定する民間資格です。 一方で、ネットで調 ...

Adobeの学割(学生・教職員版)とは?対象・値段・申し込み方法と「バレる?」「いつまで?」を解説 3

PhotoshopやIllustratorなど、Adobe(アドビ)のアプリは、デザインを学ぶ学生には欠かせない道具です。 ただ、どれも月額のサブスクリプションなので、学生にとっては大きな出費ですよね ...

X(旧Twitter)分析ツールおすすめ5選|フォロワー分析は無料でどこまでできる?目的別に比較 4

X(旧Twitter)を伸ばしたいなら、今の数字を知ることが出発点です。 ただ、分析ツールを探し始めると、こんな疑問が出てきますよね。   「X分析ツールって種類が多すぎて、どれを選べばいいの?」 「 ...

色彩検定は意味ない?履歴書に書ける?取得するメリットや仕事で役立つ級を解説 5

色彩検定は、色の知識を体系的に学べる資格として、学生から社会人まで幅広い人に受けられています。 2025年度には、1級〜UC級をあわせて4万6,000人以上が志願しました。 一方で、ネットやSNSで調 ...

-Coursera, 学び・資格