新しいサービス【AwesomeQR】

たくさんのExcelファイルを自動集計

2 min 139,226 views

現在はExcelのマクロはデフォルトでは非推奨となりますので、以下の記事を参考にしてください。

はじめに

転記元ファイルの例。下記のように4つの項目が入力されたエクセルファイルが複数あると想定します。

Excel集約イメージ

複数のエクセルファイルを1つのエクセルファイルに転記します。

集約イメージ

自動集計マクロのつくりかた

1.デスクトップにフォルダを1つ作ってください。

フォルダ作成

2.集めたエクセルファイルを、上記で作成したフォルダに入れてください。

注意点

ファイル名が同じだと、「上書き」されますので注意してください。

フォルダには、転記したいエクセルファイル以外のファイルをいれないようにしましょう。

フォルダにExcelを集約

3.転記先のエクセルファイルを作ります。エクセルを起動してください。

Excel集約イメージ

4.転記先のエクセルファイルが起動したら、「開発」タブの「Visual Basic」ボタンをクリックしてください。

Excel開発タブ

5.起動した画面のメニューから「挿入」の「標準モジュール」をクリックしてください。

標準モジュール

6.白いウィンドウが現れます。

VBA画面

7.白いウィンドウに、下記をコピーして貼り付けてください。

Sub tenki()
	Dim folder As String
	Dim file As String
	Dim book As Workbook
	Dim i As Integer
	i = 2

	With Application.FileDialog(msoFileDialogFolderPicker)
		If .Show = True Then
			folder = .SelectedItems(1)
		End If
	End With

	file = Dir(folder & "\*.xlsx")

	Do While file <> ""

		Set book = Workbooks.Open(folder & "\" & file)

		ThisWorkbook.Worksheets("Sheet1").Range("A"&CStr(i)).Value= book.Worksheets("Sheet1").Range("B3").Value
		ThisWorkbook.Worksheets("Sheet1").Range("B"&CStr(i)).Value= book.Worksheets("Sheet1").Range("C3").Value
		ThisWorkbook.Worksheets("Sheet1").Range("C"&CStr(i)).Value= book.Worksheets("Sheet1").Range("D3").Value
		ThisWorkbook.Worksheets("Sheet1").Range("D"&CStr(i)).Value= book.Worksheets("Sheet1").Range("C4").Value

		file = Dir()
		i = i + 1

		book.Close
	Loop

End Sub

8.以上で完成です。マクロを動かす方法は、下記ボタンをクリックして確認してください。

9.マクロを動かすと、フォルダを選択するウィンドウが出ますので、「2.」で作ったフォルダを選んでください。

改造ポイント

この部分が転記しているプログラムです。主にこの部分を改造します。

VBA
ThisWorkbook.Worksheets("Sheet1").Range("E"&CStr(i)).Value= book.Worksheets("Sheet1").Range("C8").Value
VBAコード

1.転記元のエクセルファイルのシート名を変更する場合。

2.転記元のセル番地を変更する場合。

VBAコード
VBAコード

3.転記する項目を増やす場合。

3.1.行をコピペして改造します。

VBAコード

3.2.貼り付けた方を下記のように改造します。

VBAコード

3.3.上記の例であれば、1行増えて下図のように改造することになります。

注意点

このプログラムは1回の集計を想定しています。転記元のファイルが増えて再集計するときは転記先ファイルに記入されているデータを削除してからマクロを動かしましょう。

関連記事