複数のExcelファイルを1つに結合する方法|Google Colab+Pythonで一括処理

Google ColabとPythonを使って複数のExcelファイルを1つに自動結合する方法 Python・データ処理

「店舗ごとに送られてくるExcelファイルを、毎月1つの表にコピーしてまとめている。」

そんなことはありませんか?

例えば、東京・大阪・福岡の3店舗から、それぞれExcel形式の売上データが届くケースです。

全店舗の売上をまとめて集計するには、各ファイルを開いてデータをコピーし、1つのExcelへ貼り付ける必要があります。

ファイル数が増えると、

  • 毎回、複数のExcelを開くのが面倒
  • コピーする範囲を間違える
  • 一部のデータを貼り付け忘れる
  • どの店舗のデータだったか分からなくなる
  • 同じファイルを二重に取り込んでしまう

といった問題が起きやすくなります。

この記事では、Google ColabとPythonを使って、複数のExcelファイルを1つに自動結合する方法を紹介します。

今回は実際に、

  • 検証用のExcelファイルを3つ作成
  • 3つのExcelを自動で読み込み
  • 元ファイル名を記録しながらデータを結合
  • 結合前後の件数と売上合計を照合
  • 結合結果を新しいExcelファイルとして保存
  • 保存したExcelを再読み込みして内容を確認

まで動作確認しました。

PythonやExcelをパソコンへインストールする必要はありません。今回はGoogle Colab上でExcelファイルを作成・処理しています。

「複数のExcelを開いてコピー&ペーストする作業をなくしたい」人向けの記事です。

✅ この記事は実際に動作検証しています

東京・大阪・福岡を想定した3つのExcelファイルをGoogle Colabで読み込み、1つのExcelへ結合しました。元ファイル名を追加し、結合前後の件数・売上合計を照合したうえで、保存したExcelを再読み込みして内容も確認しています。

検証結果: 3ファイル → 6件に結合 / 売上合計:62,000円 / 件数・売上照合:一致 / 保存後データ一致:True

この記事はこんな人向け

  • 店舗別・担当者別のExcelファイルを毎月まとめている
  • 複数のExcelを1つの表に結合したい
  • ファイルを1つずつ開いてコピーする作業を減らしたい
  • 結合後も、どのファイルから取り込んだデータか分かるようにしたい
  • 結合による件数漏れや金額の違いをチェックしたい
  • Excelアプリを使わず、無料のGoogle Colabで処理したい

この記事でできるようになること

今回の方法では、例えば次のように分かれている3つのExcelファイルを、

tokyo_sales.xlsx
osaka_sales.xlsx
fukuoka_sales.xlsx

1つのExcelファイルへまとめます。

3つのExcelファイル
↓
Pythonで自動読み込み
↓
元ファイル名を追加
↓
6件のデータを1つの表に結合
↓
件数・売上合計を確認
↓
combined_sales.xlsxとして保存

結合後は、次のような表になります。

商品コード商品名売上元ファイル
A005いちご11000fukuoka_sales.xlsx
A006なし7000fukuoka_sales.xlsx
A003ぶどう15000osaka_sales.xlsx
A004もも9000osaka_sales.xlsx
A001りんご12000tokyo_sales.xlsx
A002みかん8000tokyo_sales.xlsx

今回は、どのExcelから読み込んだデータなのか分かるように、「元ファイル」列も自動追加します。

なお、今回行うのは、複数のExcelのデータを縦方向に追加する処理です。商品コードなどをキーにして横方向へ結合する処理とは異なります。

今回使うデータ

店舗ごとの売上データを想定し、3つのExcelファイルを使います。

東京の売上データ

商品コード商品名売上
A001りんご12000
A002みかん8000

大阪の売上データ

商品コード商品名売上
A003ぶどう15000
A004もも9000

福岡の売上データ

商品コード商品名売上
A005いちご11000
A006なし7000

結合前の時点で、データは合計6件、売上合計は62,000円です。

今回は、結合後もこの件数と売上合計が変わらないか確認します。

Google Colabで検証用Excelを3つ作成する

まず、Google Colabで新しいノートブックを作成します。

Google Colabを開く

今回は、

TaskLess Lab_複数Excel結合テスト

という名前にしました。

新しいコードセルに、以下を貼り付けて実行してください。

import pandas as pd

# 東京の売上データ
tokyo = pd.DataFrame({
    "商品コード": ["A001", "A002"],
    "商品名": ["りんご", "みかん"],
    "売上": [12000, 8000]
})

# 大阪の売上データ
osaka = pd.DataFrame({
    "商品コード": ["A003", "A004"],
    "商品名": ["ぶどう", "もも"],
    "売上": [15000, 9000]
})

# 福岡の売上データ
fukuoka = pd.DataFrame({
    "商品コード": ["A005", "A006"],
    "商品名": ["いちご", "なし"],
    "売上": [11000, 7000]
})

# Excelファイルとして保存
tokyo.to_excel("tokyo_sales.xlsx", index=False)
osaka.to_excel("osaka_sales.xlsx", index=False)
fukuoka.to_excel("fukuoka_sales.xlsx", index=False)

print("検証用Excelを3ファイル作成しました")

display(tokyo)
display(osaka)
display(fukuoka)

実行すると、Google Colabの左側のファイル一覧に、次の3ファイルが作成されます。

tokyo_sales.xlsx
osaka_sales.xlsx
fukuoka_sales.xlsx

今回の検証でも、3ファイルが正常に生成され、それぞれの商品データが表示されました。

3つのExcelファイルを自動で読み込んで結合する

次に、作成したExcelファイルをまとめて読み込みます。

今回はPythonの pathlib を使用し、ファイル名が _sales.xlsx で終わるExcelを取得します。

以下のコードを新しいセルに貼り付けてください。

import pandas as pd
from pathlib import Path

# 結合対象のExcelファイルを取得
# 出力済みの結合ファイルは対象から除外する
files = sorted(
    file for file in Path(".").glob("*_sales.xlsx")
    if file.name != "combined_sales.xlsx"
)

# ファイルが見つからない場合は停止
if not files:
    raise FileNotFoundError("結合対象のExcelファイルが見つかりません")

# Excelを読み込んでリストにまとめる
data_list = []

for file in files:
    temp_df = pd.read_excel(file)

    # どのExcelから読み込んだデータなのか記録
    temp_df["元ファイル"] = file.name

    data_list.append(temp_df)

# 3つのExcelを縦方向に結合
combined_df = pd.concat(
    data_list,
    ignore_index=True
)

print("読み込んだファイル数:", len(files))
print("結合後のデータ件数:", len(combined_df))

display(combined_df)

今回の実行結果は、次のとおりです。

読み込んだファイル数: 3
結合後のデータ件数: 6

3つのExcelが正常に読み込まれ、6件のデータが1つの表になりました。

元ファイル列を追加する理由

今回のコードでは、次の部分で元のExcelファイル名を追加しています。

temp_df["元ファイル"] = file.name

この列があれば、結合後のデータを見ても、どの店舗から取り込んだデータなのか確認できます。

例えば、特定の商品について数値を再確認したい場合にも、元ファイルを探しやすくなります。

ファイルの読み込み順について

今回は sorted() を使ってファイル名順に並べています。

そのため、今回の実行結果では、

fukuoka_sales.xlsx
osaka_sales.xlsx
tokyo_sales.xlsx

の順番で結合されました。

店舗の並び順が変わっていても、今回の検証ではデータの内容や売上合計には影響しません。

結合前後のデータ件数と売上合計を確認する

複数のExcelを結合できても、データが途中で抜けたり、余計に取り込まれたりしていては困ります。

そこで今回は、結合前と結合後の件数・売上合計を比較しました。

使用したコードはこちらです。

# 結合前のデータ件数と売上金額を集計
original_count = sum(len(data) for data in data_list)

original_sales = sum(
    data["売上"].sum() for data in data_list
)

# 結合後のデータ件数と売上金額を集計
combined_count = len(combined_df)
combined_sales = combined_df["売上"].sum()

print("【結合前】")
print("データ件数:", original_count)
print("売上合計:", original_sales)

print("\n【結合後】")
print("データ件数:", combined_count)
print("売上合計:", combined_sales)

# 件数・売上金額が一致するか確認
count_match = original_count == combined_count
sales_match = original_sales == combined_sales

print("\n【照合結果】")
print("データ件数の一致:", count_match)
print("売上金額の一致:", sales_match)

if count_match and sales_match:
    print("成功:結合前後の件数・売上金額が一致しています")
else:
    print("注意:結合前後のデータを確認してください")

今回の実行結果は、次のとおりです。

【結合前】
データ件数: 6
売上合計: 62000

【結合後】
データ件数: 6
売上合計: 62000

【照合結果】
データ件数の一致: True
売上金額の一致: True
成功:結合前後の件数・売上金額が一致しています

今回の検証では、結合前後ともに6件・62,000円で一致しました。

ただし、件数と合計金額の一致だけで、すべてのセルが完全に同じであることを保証するものではありません。実務では必要に応じて、商品コードや明細単位でも確認してください。

結合結果を新しいExcelファイルとして保存する

次に、結合したデータを新しいExcelファイルとして保存します。

今回は、

combined_sales.xlsx

という名前にしました。

# 結合結果をExcelファイルとして保存
output_file = "combined_sales.xlsx"

combined_df.to_excel(
    output_file,
    index=False
)

print("結合したExcelファイルを保存しました")
print("保存ファイル名:", output_file)
print("保存したデータ件数:", len(combined_df))

display(combined_df)

今回の実行結果はこちらです。

結合したExcelファイルを保存しました
保存ファイル名: combined_sales.xlsx
保存したデータ件数: 6

Google Colabの左側のファイル一覧にも、新しく combined_sales.xlsx が作成されました。

保存したExcelは、左側のファイル一覧からファイル名のメニューを開き、「ダウンロード」を選択すればパソコンへ保存できます。

保存したExcelをもう一度読み込んで確認する

最後に、保存したExcelの内容が、保存前の結合結果と一致しているか確認します。

今回は pd.read_excel() で保存済みファイルを再読み込みし、equals() で比較しました。

import pandas as pd

# 保存したExcelを再読み込み
saved_df = pd.read_excel("combined_sales.xlsx")

# 結合直後のデータと比較
data_match = combined_df.equals(saved_df)

print("保存前後のデータ一致:", data_match)
print("保存後のデータ件数:", len(saved_df))
print("保存後の売上合計:", saved_df["売上"].sum())

if data_match:
    print("成功:保存したExcelの内容は結合結果と一致しています")
else:
    print("注意:保存前後のデータに違いがあります")

display(saved_df)

今回の実行結果はこちらです。

保存前後のデータ一致: True
保存後のデータ件数: 6
保存後の売上合計: 62000
成功:保存したExcelの内容は結合結果と一致しています

保存後のExcelを実際に読み込み直しても、今回の6件のデータは結合結果と一致していました。

なお、今回はPythonでExcelファイルの生成・保存・読み込みを検証しています。Microsoft Excelアプリで開く実機確認は行っていません。

元のExcelを上書きせず、別ファイルで保存する理由

今回は、東京・大阪・福岡の元ファイルを上書きせず、結合後のデータを別名で保存しています。

tokyo_sales.xlsx
osaka_sales.xlsx
fukuoka_sales.xlsx
↓
結合
↓
combined_sales.xlsx

これは、元データを残しておくためです。

万が一、結合対象のファイルを間違えたり、内容を修正したりする必要が出ても、元のExcelが残っていればやり直せます。

実務でも、最初は元ファイルを変更せず、結合結果を新しいファイルへ保存する方法がおすすめです。

自分のExcelファイルで変更する場所

今回のコードを、自分のExcelファイルにも応用できます。

まず、結合したいExcelをGoogle Colabの左側のファイル一覧へアップロードします。

今回のコードで主に確認・変更するのは、次の部分です。

今回の設定自分のExcelでは
*_sales.xlsx結合対象となるファイル名の条件
"元ファイル"取り込み元を記録する列名
"売上"合計金額を確認したい列名
combined_sales.xlsx結合後に保存するファイル名

例えば、月次売上データが、

2026_01_sales.xlsx
2026_02_sales.xlsx
2026_03_sales.xlsx

という名前なら、今回と同じ *_sales.xlsx という指定で取得できます。

一方で、

東京.xlsx
大阪.xlsx
福岡.xlsx

のような名前なら、ファイルの取得条件を変更する必要があります。

ただし、単純に *.xlsx を指定すると、同じ場所にある結合結果や無関係なExcelまで読み込む可能性があります。

実務では、結合対象のExcelだけを専用フォルダに入れるなど、読み込む範囲を明確にしておくと安全です。

結合時に注意したいこと

① Excelの列名・列構成を揃えておく

今回の3ファイルは、すべて次の列名で統一しています。

商品コード
商品名
売上

そのため、同じ列にデータを結合できました。

しかし、あるExcelでは「売上」、別のExcelでは「売上金額」という列名になっている場合、pd.concat() は自動的に同じ項目だと判断してくれるわけではありません。

異なる列として扱われ、空欄が発生する可能性があります。

結合前に、列名や列構成を確認しておきましょう。

② 今回のコードは各Excelの最初のシートを読み込む

今回使用している、

pd.read_excel(file)

は、シートを指定しない場合、基本的に最初のシートを読み込みます。

複数シートを持つExcelで、別のシートを読み込みたい場合は、sheet_name を指定する必要があります。

今回の検証は、各Excelに1つのデータ表がある構成です。

③ 結合結果を再び取り込まないようにする

同じフォルダ内に結合結果を保存すると、次回実行時に、そのファイルまで結合対象に含まれる場合があります。

今回のコードでは、結合対象を、

*_sales.xlsx

という名前に限定し、さらに combined_sales.xlsx を除外する条件を記載しています。

今回の保存ファイルは、この取得条件には含まれません。

ただし、実際に2回連続で結合処理を実行する再実行テストまでは行っていません。また、同じ条件に合う別のExcelが追加されていれば、そのファイルも取り込まれます。

業務で繰り返し使う場合は、入力フォルダと出力フォルダを分けると、対象ファイルを管理しやすくなります。

④ 商品コードなどのデータ型に注意する

商品コードや顧客IDに先頭ゼロが含まれている場合、読み込み方によっては数値として解釈されることがあります。

例えば、

00123

を文字列として扱いたい場合は、列のデータ型にも注意が必要です。

今回のサンプルでは、A001のようにアルファベットを含む商品コードを使用しています。

どんな仕事で使える?

今回の方法は、店舗別の売上データ以外にも応用できます。

  • 各支店から届く月次売上Excelの結合
  • 担当者ごとの営業実績の集約
  • 部署別に作成した管理表の統合
  • 取引先ごとに分かれた商品リストの結合
  • 月別・週別のデータを1つの表へまとめる作業
  • 複数のExcelを結合してから集計する作業

特に、

毎月、複数の担当者から同じ形式のExcelが届き、1つにまとめて報告資料を作っている

といった仕事では、今回のコードを再利用しやすいです。

ファイル数が増えても、同じ形式で保存されていれば、1つずつ開いてコピーする作業を減らせます。

以前紹介したCSV結合との違い

以前の記事では、複数のCSVファイルを1つに結合する方法を紹介しました。

今回の処理は、考え方としては同じです。

複数ファイルを読み込む
↓
データを縦方向に結合
↓
元ファイル名を記録
↓
新しいファイルとして保存

主な違いは、読み込むファイルと保存形式です。

項目CSV結合今回のExcel結合
読み込みpd.read_csv()pd.read_excel()
保存to_csv()to_excel()
保存形式.csv.xlsx

CSVを結合したい場合は、こちらの記事も参考にしてください。

あわせて読みたい

複数のCSVファイルを1つに結合する方法|Google Colab+Pythonで一括処理
複数のCSVファイルをGoogle ColabとPythonで1つにまとめる方法を解説。元ファイル名を残したまま一括結合し、combined.csvとして保存する方法まで実際に検証しました。

まとめ

今回は、Google ColabとPythonを使って、複数のExcelファイルを1つに結合しました。

実際に確認したのは、

  • 検証用のExcelファイルを3つ作成
  • 3つのExcelを読み込んで6件のデータを結合
  • 元ファイル名を自動追加
  • 結合前後の件数が6件で一致
  • 結合前後の売上合計が62,000円で一致
  • 結合結果を combined_sales.xlsx として保存
  • 保存後のExcelを再読み込みし、結合結果との一致を確認

です。

今回のように、元ファイル名を残し、結合前後の件数や金額も確認する仕組みにしておけば、単にコピー&ペーストを自動化するだけでなく、結果を確認しながら作業できます。

毎月、複数のExcelを1つずつ開いてコピーしているなら、今回の方法で結合作業を自動化して、面倒な集計前の準備を減らしていきましょう!

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