Excelの複数ファイルを1つにまとめる方法|Power Query・Python・AIの選び方
毎月届く複数のExcelファイルを1つにまとめる方法を解説します。Power Query・Python・AIのチャットの選び方、まとめる前にそろえること、AIにコードを書いてもらう頼み方、まとめた後の検算の仕方を紹介します。
目次
この記事でわかること
- 複数のExcelファイルを1つにまとめる3つの方法と、選び方
- まとめる前にそろえること
- Power Query と Python でまとめる手順
- AIにまとめるコードを書いてもらうときの頼み方
- まとめた後に、行数と合計で確かめる方法
支店や部署ごとに届く売上や経費のファイルを、毎月1つの表にまとめる作業は、コピーと貼り付けを繰り返すうちに、行の抜けや重なりが起きやすい作業です。経理の月次作業のどこにAIを使うかは、経理の月次作業をAIで効率化する手順で紹介しています。この記事では、同じ形の複数のファイルを1つにまとめる方法を3つに分けて、選び方と手順を紹介します。
外部の情報は、Microsoft のサポートページと pandas の公式の資料、個人情報保護委員会の注意喚起で確かめた内容だけを書きます。ExcelをAIで自動化する方法の全体は、ExcelをAIで自動化する方法で紹介しています。
3つの方法と選び方
先に結論を書くと、毎月まとめるなら、Excelの中で完結する Power Query か、Python のどちらかにします。 AIのチャットにファイルを渡してまとめてもらう方法は、渡してよいデータで、1回だけまとめるときに限ります。
| 方法 | 向く場面 |
|---|---|
| Power Query | 毎月の更新 |
| Python | 細かい処理 |
| AIのチャット | 1回だけ |
Power Query は、Excelの「データ」タブから使える機能で、コードを書かずにフォルダーのファイルをまとめられます。Python は、列の確認や並べ替えなど、まとめる前後の処理を細かく決めたいときに向きます。
どれを選ぶかの判断
迷ったときは、「来月も同じ作業をするか」と「ファイルを外に出せるか」で決めます。来月も同じ作業をするなら、手順を残せる Power Query か Python にします。会社のファイルを外のサービスに渡せないなら、AIのチャットには列の名前だけを伝え、コードを書いてもらう形にします。
まとめる前にそろえること
どの方法でも、まとめる前に次の3つをそろえます。
- 列をそろえる: すべてのファイルで、列の名前と数を同じにします
- 専用のフォルダーを作る: まとめるファイルだけを入れ、ほかのファイルは入れません
- 元のファイルは残す: まとめた結果は別のファイルに保存し、元のファイルは書き換えません
Microsoft のサポートページでは、Power Query で複数のファイルをまとめる前に、結合するすべてのファイルが、無関係なファイルのない専用フォルダーに含まれていることを確かめるように書かれています。そうしないと、フォルダー内のすべてのファイルが、結合されるデータに含まれます。各ファイルは、列のヘッダーやデータ型、列の数が一貫した、同じスキーマを持つ必要があるとされています。
方法1: Power Query でフォルダーのファイルをまとめる
Power Query は、同じスキーマを持つ複数のファイルを1つのフォルダーにまとめ、1つのテーブルにまとめられる機能です。Microsoft のサポートページでは、列は同じで行数と値が違う、複数の部門の予算ブックを毎月結合したい場合が例に挙げられています。
- Excelで「データ」→「データの取得」→「ファイルから」→「フォルダーから」を選びます
- まとめるファイルを入れたフォルダーを選びます
- 表示されたファイルの一覧に、必要なファイルがすべてあるかを確かめます
- 「結合」から「結合して読み込む」などを選び、サンプルにするファイルを選んで「OK」を押します
Power Query は、各ファイルのデータを1つのワークシートにまとめるクエリを自動で作ります。設定した後は、データを更新して毎月の結果を確かめられます。来月は、フォルダーのファイルを入れ替えてから更新します。
画面の項目の名前は、Excelの版によって違うことがあります。この記事の手順は、Microsoft のサポートページで確かめた内容で、作業PCの Excel では動かしていません。
方法2: Python でまとめる
Python では、pandas というライブラリを使います。pandas の公式の資料では、read_excel は Excel のファイルを DataFrame という表の形に読み込む関数で、xlsx の形式などに対応しています。concat は、複数の表を1つにつなげる関数です。
次のコードは、monthly というフォルダーにある xlsx のファイルを順に読み、列の名前と順番が最初のファイルと同じかを確かめてから、1つの表にまとめます。どのファイルから来た行かが分かるように、「元のファイル」という列を足し、まとめた結果は merged.xlsx に保存します。元のファイルは書き換えません。
import pandas as pd
from pathlib import Path
folder = Path("monthly")
frames = []
columns = None
for path in sorted(folder.glob("*.xlsx")):
df = pd.read_excel(path)
if columns is None:
columns = list(df.columns)
elif list(df.columns) != columns:
raise SystemExit(f"列が違う: {path.name}")
df["元のファイル"] = path.name
frames.append(df)
print(path.name, len(df), df["金額"].sum())
merged = pd.concat(frames, ignore_index=True)
print("合計", len(merged), merged["金額"].sum())
merged.to_excel("merged.xlsx", index=False)
ignore_index=True は、まとめた表の行番号を0から振り直す指定です。xlsx のファイルを読むには、pandas のほかに openpyxl というライブラリも使います。「金額」は合計を確かめる列の名前なので、自分のファイルの列の名前に変えます。
このコードは、架空の3つのファイル(合わせて6行)で動かし、6行の1つの表になり、ファイルごとの金額の合計を足した値と、まとめた後の合計が同じになることを確かめました。列の名前を1つ変えたファイルや、列の順番を入れ替えたファイルを入れると、まとめたファイルを書き出す前に止まりました。まとめたファイルを元のフォルダーに置いたまま実行したときも、列が1つ多いため止まりました。どの場合も、元のファイルは変わりませんでした。確かめたときの版は、Python 3.12.10、pandas 3.0.6、openpyxl 3.1.5 です。
AIにまとめるコードを書いてもらう
Pythonを書いたことがなくても、AIにコードを書いてもらえます。このとき、実際のファイルを渡す必要はありません。列の名前と、やりたいことだけを伝えます。
次の依頼文は、実際のデータを入れない形の例です。AIにはコードを書いてもらうだけで、ファイルには触れさせません。
同じ形のExcelファイルを1つにまとめる
Pythonのコードを書いてください。
実際のデータは入れていません。
- monthly フォルダーの xlsx を全部読む
- 列: 日付・科目・金額
- 列の名前と順番が違うファイルがあれば、
書き出す前に止まる
- どのファイルの行か分かる列を足す
- ファイルごとの行数と金額の合計、
まとめた後の行数と合計を表示する
- 結果は別のファイルに保存し、
元のファイルは書き換えない
動かす前に、架空のファイルで試す方法も
書いてください。
コードを書いたら、実行しないで
見せるところで止まってください。
AIが書いたコードは、まず架空のファイルで動かします。Pythonの基本から学びたいときは、Pythonの学び方も参考になります。行数と合計が合うことを確かめてから、実際のファイルのコピーで動かします。Pythonで Excel の作業を進める流れは、Claude CodeとPythonでExcelの定型レポートを自動作成する手順でも紹介しています。
AIのチャットにファイルを渡すときに気をつけること
AIのチャットにファイルを渡してまとめてもらう方法は手軽ですが、会社のファイルを外のサービスに渡すことになります。
生成AIサービスの使い方については、個人情報保護委員会が注意喚起を公表しています。個人情報を含むプロンプトを事業者が入力するときは、特定された利用目的の達成に必要な範囲内かを十分に確かめるように、という内容です。同じ注意喚起には、生成AIサービスの応答結果に不正確な内容が含まれることがある、とも書かれています。
取引先や従業員の名前が入ったファイルは、社内のルールと、使うサービスの利用規約を確かめてから扱います。決まっていなければ、ファイルは渡さず、前の節のようにコードだけを書いてもらいます。AIがまとめた表は、次の節の検算をしてから使います。
まとめた後に確かめること
まとめた表は、そのまま使わずに、次の3つを確かめます。
- 行数: ファイルごとの行数を足した数と、まとめた後の行数が同じか
- 合計: ファイルごとの金額の合計を足した値と、まとめた後の合計が同じか
- 元のファイルの列: どのファイルの行かが分かり、抜けているファイルが無いか
方法2のコードは、行数と合計を表示するので、その数字を見比べます。Power Query でまとめたときも、元のファイルの行数と合計を Excel で数えて見比べます。まとめた表と元のファイルの違いを詳しく調べたいときは、2つのExcelファイルの違いを見つける方法が参考になります。
つまずきやすいところ
- まとめたファイルを同じフォルダーに保存する: 次にまとめるときに、まとめたファイルも対象になります。別のフォルダーに保存します
- 列の名前が1文字だけ違う: 「科目」と「勘定科目」のように違うと、同じ列として扱われません。まとめる前に列をそろえます
- 関係のないファイルがフォルダーに入っている: まとめるファイルだけを入れた専用のフォルダーを使います
- 検算をせずに使う: 行数と合計を見比べてから使います
自分でまとめる仕組みを作る時間がないときは、作業を人に頼む方法もあります。頼む前の準備はExcel自動化を自分で作るか外注するかで紹介しています。
まとめ
- 毎月まとめるなら Power Query か Python、AIのチャットは渡してよいデータで1回だけのときに使います
- まとめる前に、列をそろえ、まとめるファイルだけを入れた専用のフォルダーを作ります
- 元のファイルは書き換えず、まとめた結果は別のフォルダーに保存します
- AIにはファイルを渡さずに、列の名前とやりたいことを伝えてコードを書いてもらえます
- まとめた後は、行数と合計を見比べてから使います
よくある質問
列の順番が違うファイルも、まとめられますか?
Power Query では、列は列名で照合されるため、同じ順序である必要はないと Microsoft の案内に書かれています。この記事の Python のコードは、列の名前と順番が最初のファイルと同じかを確かめ、違えば書き出す前に止まります。
まとめたファイルを、元のファイルと同じフォルダーに保存してもよいですか?
保存しません。Power Query では、専用のフォルダーでないと、フォルダー内のすべてのファイルが結合されるデータに含まれると Microsoft の案内に書かれています。この記事の Python のコードでは、列が1つ多いファイルとして扱われ、止まります。まとめたファイルは、別のフォルダーに保存します。
会社のExcelファイルを、AIのチャットに渡してもよいですか?
先に社内のルールと、使うサービスの利用規約を確かめます。個人情報保護委員会は、個人情報を含むプロンプトを入力する場合は、利用目的の達成に必要な範囲内かを十分に確認するよう注意を呼びかけています。決まっていなければ、実際のファイルは渡さず、列の名前だけを伝えてコードを書いてもらいます。
Pythonを学んだことがなくても、Pythonの方法を使えますか?
AIにコードを書いてもらえば始められます。ただし、架空のファイルで動かして、行数と合計が合うことを自分で確かめてから、実際のファイルに使います。
毎月まとめ直すときは、また最初から作業が必要ですか?
Power Query では、設定した後はデータを更新して毎月の結果を確認できると Microsoft の案内に書かれています。Python の方法では、フォルダーのファイルを入れ替えて、同じコードをもう一度実行します。