記事内に広告が含まれています。

【Python】複数のExcelファイルを1つに統合する方法

Python

複数のExcelファイルに分かれているデータを、1つのファイルにまとめたいことはありませんか?

今回は、Pythonの openpyxl を使って、3つのExcelファイルの売上データを1つに統合する方法を紹介します。

完成したExcelファイルや自動化の実例については、以下の記事で紹介しています。

投稿者
もも

40代・大阪の女性フリーランスSE。
業務効率化・自動化の仕事をしています。
最近はUiPathを中心に、Pythonや生成AIにも挑戦中。
効率化の事例や学んだことなど発信しています。

ももをフォローする

今回使用するExcelファイル

A支店・B支店・C支店の3つのExcelファイルを用意します。

支店のExcelファイルには、2026年11月1日の売上データが1件ずつ入っています。

統合前のExcelファイル

A支店.xlsx

日付売上金額
2026/11/1100,000

B支店.xlsx

日付売上金額
2026/11/190,000

C支店.xlsx

日付売上金額
2026/11/1150,000

どのファイルも「日付」「売上金額」の2列だけのシンプルな構成です。

今回は、この3つのファイルを1つにまとめます。

フォルダの準備

今回使用するファイルを、次のように配置します。

フォルダ
├─ main.py
├─ 統合ファイル.xlsx
└─ 入力
   ├─ A支店.xlsx
   ├─ B支店.xlsx
   └─ C支店.xlsx

「統合ファイル.xlsx」には、あらかじめ「統合シート」という名前のシートを作成しておきます。

「統合シート」の表はExcelのテーブルにしておきます。

2行目以降は空欄にしておき、2行目にはコピー元となる日付や金額などの書式を設定しておきます。

Pythonコード

今回は openpyxl ライブラリを使用します。

from pathlib import Path
from copy import copy
import openpyxl

# フォルダ・ファイルのパス
base_path = Path(__file__).resolve().parent
folder_path = base_path / "入力"
output_path = base_path / "統合ファイル.xlsx"

# 統合先のExcelファイルを読み込む
output_book = openpyxl.load_workbook(output_path)
output_sheet = output_book["統合シート"]

# 出力開始行
output_row = 2

# 入力フォルダ内のExcelファイルを順番に処理
for file in folder_path.glob("*.xlsx"):

    # 入力ファイルを読み込む
    input_book = openpyxl.load_workbook(file, read_only=True, data_only=True)
    input_sheet = input_book.worksheets[0]

    # 日付・支店名・売上金額を出力
    output_sheet.cell(output_row, 1).value = input_sheet["A2"].value
    output_sheet.cell(output_row, 2).value = file.stem
    output_sheet.cell(output_row, 3).value = input_sheet["B2"].value

    # 入力ファイルを閉じる
    input_book.close()

    # 次の出力行へ
    output_row += 1

# テーブル範囲を拡張
table = next(iter(output_sheet.tables.values()))
table.ref = f"A1:C{output_row - 1}"

# 2行目の書式を追加行へコピー
for row in range(3, output_row):
    for column in range(1, 4):
        output_sheet.cell(row, column)._style = copy(output_sheet.cell(2, column)._style)
if table.autoFilter is not None:
    table.autoFilter.ref = table.ref

# 統合先のExcelファイルを保存
output_book.save(output_path)
output_book.close()

今回のコードでは、入力フォルダにあるExcelファイルを順番に読み込み、拡張子を除いたファイル名を支店名として使用しています。

例えば、「A支店.xlsx」というファイルなら、「A支店」が自動的に設定されます。

また、統合後はExcelテーブルの範囲を拡張し、2行目の書式を追加した行にコピーしています。

実行結果

Pythonプログラムを実行すると、「統合ファイル.xlsx」の「統合シート」に3支店の売上データが書き込まれます。

3つのExcelファイルから売上データを取得し、1つのシートにまとめることができました。

元のExcelファイルにはなかった「支店名」も追加されています。

また、Excelテーブルの範囲とセルの書式も反映されました。

テーブルの範囲や書式もPythonから変更できるんですね。Excelの自動化にもいろいろ活用できそうです!

まとめ

今回は、Pythonの openpyxl を使って、複数のExcelファイルの売上データを1つに統合する方法を紹介しました。

openpyxl を使えば、Excelアプリケーションを起動せずにファイルを読み書きでき、テーブル範囲の変更やセルの書式コピーも行えます。

Excelアプリケーションを起動しないので処理が速いんですね

今回はシンプルな例ですが、日々の売上データの集約など、繰り返し発生するExcel作業にも応用できそうです。