複数のシートが入っているブックがいくつかある場合、指定されたシートの一部範囲を集約ブックにマージすることは、手動で行うと非常に時間がかかります。特に複数人が入力したデータを一つにまとめるための効率的な方法として、Excelのマクロを使うと便利です。この記事では、そのためのマクロコードの作成方法について解説します。
1. 複数のExcelシートを集約するマクロの基本
まず、複数のシートを集約するためには、対象のシートを選択し、必要な範囲をコピーして集約先のシートに貼り付けるという流れを繰り返すマクロを作成します。以下はその基本的なコードです。
Sub MergeSheets()
Dim ws As Worksheet, targetSheet As Worksheet
Dim lastRow As Long, lastCol As Long
' 集約先シートの設定
Set targetSheet = ThisWorkbook.Sheets("集約シート")
' シートをループ
For Each ws In ThisWorkbook.Sheets
' 対象シートのみを処理
If ws.Name <> "集約シート" Then
' 対象シートの最終行と最終列を取得
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
lastCol = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column
' データをコピーして集約シートに貼り付け
ws.Range(ws.Cells(1, 1), ws.Cells(lastRow, lastCol)).Copy
targetSheet.Cells(targetSheet.Cells(targetSheet.Rows.Count, "A").End(xlUp).Row + 1, 1).PasteSpecial xlPasteValues
End If
Next ws
End Sub
このコードは、すべてのシートをループして、指定された範囲(ここではA列から始まり、最終行および最終列まで)を集約シートにコピーします。
2. マクロを実行する際の注意点
マクロを実行する際には、いくつかの注意点があります。まず、集約シートがどのシートにも含まれていないことを確認し、対象となるシートのみを選択するようにしましょう。また、データが重複しないように、既に集約されているデータの末尾に追加されるようにする必要があります。
3. マクロをカスタマイズする方法
上記の基本的なマクロコードでは、すべてのシートを対象にしていますが、特定のシートだけを集約したい場合は、シート名を指定する方法もあります。例えば、次のように特定のシートを指定して集約することができます。
Sub MergeSelectedSheets()
Dim ws As Worksheet, targetSheet As Worksheet
Dim lastRow As Long, lastCol As Long
' 集約先シートの設定
Set targetSheet = ThisWorkbook.Sheets("集約シート")
' 集約するシートを手動で指定
Set ws = ThisWorkbook.Sheets("シート1")
' 必要な範囲をコピー
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
lastCol = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column
ws.Range(ws.Cells(1, 1), ws.Cells(lastRow, lastCol)).Copy
targetSheet.Cells(targetSheet.Cells(targetSheet.Rows.Count, "A").End(xlUp).Row + 1, 1).PasteSpecial xlPasteValues
End Sub
このように、特定のシートを明示的に指定してそのデータだけを集約することが可能です。
4. まとめと実践のポイント
複数のシートを一つにまとめる作業は、手動で行うと非常に時間がかかりますが、マクロを使用することで、効率的に処理を行うことができます。この記事で紹介したマクロコードを参考にして、自分の用途に合わせてカスタマイズしてください。特に複数人が入力する表データをまとめる場合、マクロを使ってスムーズにデータを集約できるため、作業の効率化が図れます。


コメント