CSVの集計を自動化したい。Excelだけでできる?Power Queryでできることと限界

CSVの集計を自動化したい。Excelだけでできる?Power Queryでできることと限界

記事
IT・テクノロジー
毎月、売上や経費のCSVをダウンロードして、Excelへ貼り付け、不要な列を削除し、合計を出す。作業自体は難しくなくても、ファイルが増えると確認に時間がかかります。 「この集計、Excelだけで自動化できないだろうか」と考えているなら、最初に試したいのが**Power Query(パワークエリ)**です。Excelの標準機能で、複数のCSVの読み込み、結合、整形を繰り返し実行できます。VBA(マクロ)やPythonを使わずに済むケースも珍しくありません。 ただし、Excelで実現できることと、完全に人手をなくせることは別です。どこまで任せられるか、具体的な作業に沿って整理します。

Excelだけで自動化しやすいのは、どんな集計?

例えば、店舗ごとの売上CSVが毎月届く仕事を考えます。各CSVに「日付・店舗・商品・金額」という列があり、列の意味や並び方が毎回ほぼ同じだとします。 この条件なら、次の処理はExcel標準機能の組み合わせで対応できます。 結合:同じ形式の複数CSVを、1つの明細表にまとめる。 整形:不要な列の削除、列名の変更、日付や金額のデータ型の調整を行う。 集計:店舗別・商品別・月別の売上をピボットテーブルなどで計算する。 更新:新しいCSVを指定フォルダーに置き、Excel側で更新操作を行う。 役割を分けると、Power Queryが「集めて整える係」、ピボットテーブルや関数が「集計して見せる係」です。MicrosoftもPower Queryによるフォルダー内ファイルの結合と更新方法を案内しています。

例えば、毎月の売上CSVをまとめると

9月と10月の売上CSVがあり、各ファイルの形式は同じものとします。これらを毎回開いてコピーする代わりに、あらかじめExcelから保存フォルダーを参照する設定を作ります。 新しいCSVが届いたらフォルダーへ保存し、Excelで「すべて更新」を実行する。条件が変わっていなければ、前回登録した取り込み・整形の手順が再実行され、集計元データを更新できます。
fig_01.png

図の金額は説明用の架空例です。重要なのは、毎月の作業を「コピーして計算する」から「ファイルを置いて更新・確認する」へ変えられることです。 もちろん、最初の設定は必要です。さらに、元CSVの取得そのものや、集計結果の社内配信まで自動になるわけではありません。

Power Queryを使う基本的な手順

Windows版の対応するデスクトップExcelを例にすると、設定の流れは次のようになります。 CSV専用フォルダーを作る:対象ファイルだけを入れる場所を決めます。無関係なCSVや過去の別形式ファイルを混在させないことが大切です。 Excelでフォルダーを指定する:「データ」→「データの取得」→「ファイルから」→「フォルダーから」を選び、結合と変換を行います。画面や機能名はバージョンで異なる場合があります。 整形ルールを登録する:不要列の削除、日付・数値・文字列の指定、必要なら列名の統一を行います。 集計表を作る:読み込んだデータをピボットテーブルなどで、月別・店舗別に集計します。 翌月のデータで試す:CSVを追加・差し替えして更新し、明細件数と合計金額を元データと照合します。 取り込むCSVが1つだけなら、「データ」→「テキストまたはCSVから」で始める方法もあります。Excelの関数やピボットテーブルだけで十分なら、無理にPower Queryを入れる必要もありません。

「更新すれば終わり」にする前に、確認したい4つの落とし穴

1.同じ売上を二重に集計していないか 毎月のCSVが「その月だけの明細」なら追加して積み上げる運用が考えられます。一方、毎月ダウンロードするCSVが「年初からの累計データ」なら、前月のファイルを残して結合すると同じ売上を重複計上する可能性があります。 追加方式か差し替え方式かは、CSVの中身で決めます。 ファイル名が違うから別の明細とは限りません。 2.列名や文字コードが変わっていないか 「売上金額」が「売上」に変わる、区切り記号が変わる、文字コードの違いで日本語が崩れる。こうした変更があると、昨日まで動いていた取り込みにエラーが出ることがあります。処理対象の列や文字コードを確認できる形にしておきましょう。 3.日付や商品コードが勝手に変換されないか CSVの「00123」は商品コードなのに、数値として取り込むと先頭のゼロが失われることがあります。日付の解釈や空欄の扱いも同様です。合計金額だけ合っていても、商品別の内訳が壊れている可能性があります。 商品コードは文字列、売上金額は数値、日付は日付として扱うなど、列ごとに意図した型を指定します。 4.エラーや未取り込みを見落としていないか 「更新が完了した」ことは「すべてのデータが正しい」ことを意味しません。取り込み対象のファイル数、明細件数、金額合計を確認する仕組みがあると、月次運用が安定します。 特に、異常なファイルを自動で飛ばす設定は慎重に使います。失敗したファイルを見落としたまま、正しそうな集計表だけが残ることがあるからです。

Excelだけで十分な場合、別の方法を考えたい場合

Excelの標準機能が向いている場合は、決まった形式のCSVを定期的に読み込み、人がExcelを開いて結果を確認する運用です。データ量も現場のPCで無理なく扱え、更新方法を担当者に引き継げるなら、まずはPower Queryを試す価値があります。 VBAの追加を考えたい場合は、更新の前後に細かいファイル操作や指定帳票への転記、ボタンによる一連の操作が必要な場合です。ただし、会社のセキュリティ設定でマクロの実行が制限されることもあります。 Pythonや別システムを考えたい場合は、Excelを開かずに決まった時刻に実行したい、複数システムからデータを取得したい、結果を配信したい、といった要求がある場合です。これらはExcel以外の自動実行環境や連携設計が必要になることがあります。 また、Excelのワークシートには1,048,576行という上限があります。大量データをシートへ展開する設計では、この制約やPCのメモリ・処理時間も考慮しなければなりません。Power Query側の処理上限と、シートへ表示できる行数は同じではありません。

自作する場合も、依頼する場合も、先に決めたいこと

最初から細かな仕様書を作る必要はありません。まずは、次の5点を整理すると方式を決めやすくなります。 元CSVは何種類・何ファイルあるか。列名やファイルの形式は毎回同じか。 CSVは当月分か累計分か。重複を判断できる伝票番号などはあるか。 集計したいのは月別・店舗別・商品別など、何を軸にした数字か。 最終的な表の見本はあるか。更新後にどの数値を確認するか。 Excelを開いて更新できればよいか、無人での定時実行まで必要か。 社外へ相談するときは、まず氏名や取引先情報などを伏せたサンプルCSVと、希望する集計表の見本があると話が進みやすくなります。 私が業務ツール制作の相談を受ける際も、最初からプログラム開発を前提にはしません。Excelの標準機能で済むのか、VBAを追加する意味があるのか、別の仕組みが適切なのかを作業内容から判断します。ココナラ内での購入前相談は無料で、仕様が明確な小規模・単機能開発は原則1万円から、複雑なものは個別見積りという方針です。 「CSV集計を自動化したい」という相談では、何を自動化するか以上に、更新後の数字をどう確かめるかが重要です。まずは、Excelで残したい手作業と、なくしたい手作業を分けてみてください。
サービス数100万件のスキルマーケット、あなたにぴったりのサービスを探す