サイトアイコン HIBISEI Blog

Excelで複数のファイルを1つにまとめて自動集計する方法

あなたは複数のエクセルフォルダを1つにまとめて集計するのが面倒だと思ったことはありませんか?

例えば、10人のメンバーからExcelファイルを提出してもらい、1つのExcelにまとめてさらに別の方に提出するなどの場合、10個のファイルを1つにまとめるのは面倒ですよね。

Aさんのファイルを開いて、集計ファイルに転記して、
Bさんのファイルを開いて、集計ファイルに転記して、
Cさんのファイルを開いて、集計ファイルに転記して・・・10人分もやってられません。

そんなときはExcel VBAでファイルを1つにまとめれば、集計するのも簡単です。

今回は「Excelで複数のファイルを1つにまとめて自動集計する方法」を紹介します。

Excelで複数のファイルを1つにまとめて自動集計する方法

Excelで複数のファイルを1つにまとめて自動集計する方法です。

今回は、A、B、Cのファイルを、集計ファイルにまとめるのを例に紹介します。

集計ファイルには、1月~3月の売上集計するシートと、A,B,C,のシートがあります。

A,B,Cのシートは空欄です

別のA,B,Cのファイルには、それぞれ売上の数字が入っています。

これを「集計」ファイルにまとめていきます。

マクロを作るときは、「開発」タブを使います。
開発タブが出ていない方は、下のリンクで出し方を紹介していますので、まずは準備をお願いします。
→エクセルで開発タブを表示する方法

1.「開発」タブをクリック →「挿入」をクリック →「ボタン」をクリック

2.「新規作成」をクリック

3.コード入力画面が開く

4.コードを入力

コードを入力します。

A,B,Cファイルを、集計ファイルにまとめる、という内容です。

5.ボタンができた

ボタンができた

6.ボタンを押す →集計完了

ボタンを押すと、「集計が完了しました」と出ました。

A,B,Cのシートに、ファイルの数字が入りました。

集計シートにも、集計された数字が反映されました。

集計シートには数式が入っていて、A,B,Cシートの数字を合計するようになっています。

(シートをまたいで合計する方法は、下のリンク先でも紹介しています。
 →エクセルで別のシートをまたいで合計する方法 SUM関数)

これで集計が簡単になりましたね!

まとめ

Excelで複数のファイルを1つにまとめて自動集計する方法です。

1.「開発」タブをクリック →「挿入」をクリック →「ボタン」をクリック

2.新規作成をクリック

3.コード入力画面が開く

4.コードを入力

5.ボタンができた

6.ボタンを押す →集計完了

これでフォルダ内のファイルの集計が簡単にできて便利です!

最後に今回使ったコードです。

    Dim wb集計 As Workbook
    Dim wb元 As Workbook
    Dim ws元 As Worksheet
    Dim ws先 As Worksheet
    Dim フォルダ As String
    Dim ファイル名 As Variant
    Dim i As Long

    '集計ファイルを取得
    Set wb集計 = ThisWorkbook

    '集計ファイルが保存されているフォルダ
    フォルダ = wb集計.Path & "\"

    '対象ファイル名
    ファイル名 = Array("A.xlsx", "B.xlsx", "C.xlsx")

    '画面更新を停止して高速化
    Application.ScreenUpdating = False

    On Error GoTo エラー処理

    'A、B、Cの順に処理
    For i = LBound(ファイル名) To UBound(ファイル名)

        '元ファイルを開く
        Set wb元 = Workbooks.Open( _
            Filename:=フォルダ & ファイル名(i), _
            ReadOnly:=True)

        '元ファイルの1枚目のシート
        Set ws元 = wb元.Worksheets(1)

        '集計ファイルの対応するシート
        Set ws先 = wb集計.Worksheets( _
            Replace(ファイル名(i), ".xlsx", ""))

        '貼り付け先をクリア
        ws先.Cells.ClearContents

        'データをコピーして貼り付け
        ws元.UsedRange.Copy _
            Destination:=ws先.Range("A1")

        '元ファイルを保存せずに閉じる
        wb元.Close SaveChanges:=False

        Set wb元 = Nothing

    Next i

    '集計ファイルを保存
    wb集計.Save

    Application.ScreenUpdating = True

    MsgBox "A・B・Cの集計が完了しました。", vbInformation

    Exit Sub

エラー処理:

    'エラー時も開いた元ファイルを閉じる
    On Error Resume Next

    If Not wb元 Is Nothing Then
        wb元.Close SaveChanges:=False
    End If

    Application.ScreenUpdating = True

    MsgBox "処理中にエラーが発生しました。" & vbCrLf & _
           "対象ファイル:" & ファイル名(i) & vbCrLf & _
           "エラー内容:" & Err.Description, vbExclamation

モバイルバージョンを終了