複数のExcelファイルに分かれているデータを、1つのファイルにまとめたいことはありませんか?
今回は、Excel VBAを使って、3つのExcelファイルの売上データを1つに統合する方法を紹介します。
完成したExcelファイルや自動化の実例については、以下の記事で紹介しています。
今回使用するExcelファイル
A支店・B支店・C支店の3つのExcelファイルを用意します。
統合前のExcelファイル
A支店.xlsx
| 日付 | 売上金額 |
|---|---|
| 2026/11/1 | 100,000 |
B支店.xlsx
| 日付 | 売上金額 |
|---|---|
| 2026/11/1 | 90,000 |
C支店.xlsx
| 日付 | 売上金額 |
|---|---|
| 2026/11/1 | 150,000 |
どのファイルも「日付」「売上金額」の2列だけのシンプルな構成です。
今回は、この3つのファイルを1つにまとめます。
フォルダの準備
今回使用するファイルを、次のように配置します。
Excel統合
├─ 統合マクロ.xlsm
└─ 入力
├─ A支店.xlsx
├─ B支店.xlsx
└─ C支店.xlsx
「統合マクロ.xlsm」には、あらかじめ「統合シート」という名前のシートを作成しておきます。

「統合シート」の1行目には、「日付」「支店名」「売上金額」の見出しを設定し、2行目以降は空欄にしておきます。
VBAコード
以下が、今回使用したコードです。
「統合マクロ.xlsm」の標準モジュールに記述します。
Sub ファイル統合()
Dim folderPath As String
Dim fso As Object
Dim folder As Object
Dim outputRow As Long
Dim file As Object
Dim inputBook As Workbook
Dim inputSheet As Worksheet
'入力フォルダ
folderPath = "ここは入力フォルダのパスを書く"
Set fso = CreateObject("Scripting.FileSystemObject")
Set folder = fso.GetFolder(folderPath)
'出力開始行
outputRow = 2
'入力フォルダ内のファイルを順番に処理
For Each file In folder.Files
'入力ファイルを開く
Set inputBook = Workbooks.Open(file.Path, ReadOnly:=True)
Set inputSheet = inputBook.Worksheets(1)
'日付・支店名・売上金額を出力
With ThisWorkbook.Worksheets("統合シート")
.Cells(outputRow, 1).Value = inputSheet.Range("A2").Value '日付
.Cells(outputRow, 2).Value = fso.GetBaseName(file.Name) '支店名
.Cells(outputRow, 3).Value = inputSheet.Range("B2").Value '売上金額
End With
'入力ファイルを閉じる
inputBook.Close SaveChanges:=False
'次の出力行へ
outputRow = outputRow + 1
Next file
'マクロファイル自身を保存
ThisWorkbook.Save
End Sub
今回のコードでは、ファイル名から拡張子を除いた文字列を支店名として利用しています。
例えば、「A支店.xlsx」であれば「A支店」が設定されます。

ファイル名をそのまま支店名として利用できるので、元のExcelファイルを変更せずに統合できますね!
実行結果
マクロを実行すると、「統合マクロ.xlsm」の「統合シート」に、3支店の売上データが書き込まれます。
| 日付 | 支店名 | 売上金額 |
|---|---|---|
| 2026/11/1 | A支店 | 100,000 |
| 2026/11/1 | B支店 | 90,000 |
| 2026/11/1 | C支店 | 150,000 |
3つのExcelファイルから売上データを取得し、1つのシートにまとめることができました。
まとめ
今回は、Excel VBAを使って、複数のExcelファイルの売上データを1つに統合する方法を紹介しました。
FileSystemObject を使ってフォルダ内のファイルを順番に取得し、必要なデータを読み込むことで、手作業でのコピー&ペーストを自動化できます。


