複数のExcelシートからデータを集約するマクロコードの作成方法

Visual Basic

複数のシートが入っているブックがいくつかある場合、指定されたシートの一部範囲を集約ブックにマージすることは、手動で行うと非常に時間がかかります。特に複数人が入力したデータを一つにまとめるための効率的な方法として、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. まとめと実践のポイント

複数のシートを一つにまとめる作業は、手動で行うと非常に時間がかかりますが、マクロを使用することで、効率的に処理を行うことができます。この記事で紹介したマクロコードを参考にして、自分の用途に合わせてカスタマイズしてください。特に複数人が入力する表データをまとめる場合、マクロを使ってスムーズにデータを集約できるため、作業の効率化が図れます。

コメント

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