複数シートに分散されたデータを1つのシートに自動集計するVBAコード

Excelを使っていると、同じ形式のデータが複数のシートに存在するケースがあります。たとえば「データA」「データB」「データC」といったシートに同じ列構成でデータが記録されており、それらを「集計」シートにまとめて管理したいといった場面です。

この記事では、複数シートの表形式データを1つのシートに一括で集約するVBAコードをご紹介いたします。

目次

使用するVBAコード

Sub CollectSheetData()
    Dim summarySheet As Worksheet
    Dim targetSheet As Worksheet
    Dim baseRange As Range
    Dim copyRange As Range
    Dim lastRow As Long

    Set summarySheet = Worksheets("Summary")
    Set baseRange = summarySheet.Range("A1").CurrentRegion

    For Each targetSheet In Worksheets
        If targetSheet.Name <> summarySheet.Name Then
            Set copyRange = targetSheet.Range("A1").CurrentRegion
            Set copyRange = copyRange.Resize(copyRange.Rows.Count - 1).Offset(1)
            lastRow = summarySheet.Cells(summarySheet.Rows.Count, 1).End(xlUp).Row + 1
            summarySheet.Cells(lastRow, 1).Resize(copyRange.Rows.Count, copyRange.Columns.Count).Value = copyRange.Value
        End If
    Next
End Sub

コードのポイント

  • summarySheet:集約先のシート(ここでは「Summary」)を指定します。
  • targetSheet:処理対象となる各ワークシートをループします。
  • CurrentRegion:表形式のセル範囲全体を自動で認識します。
  • Offset(1)Resize(-1):見出し行を除いたデータのみをコピーします。
  • lastRow:集約先シートの次の空行を自動判定し、データを順次追記します。

注意点

  • すべてのデータシートが同じ列構成である必要があります。
  • summarySheetには見出し行が既に存在している前提です。
  • 途中に空白行があるとCurrentRegionの判定が意図しない結果になる可能性があるため、整形された表データを前提としてください。

まとめ

本記事では、VBAを活用して複数のExcelシートに点在するデータを1つに集計する方法をご紹介いたしました。
データ収集の自動化は、手作業の工数削減だけでなく、転記ミスの防止にもつながります。

日々の集計作業にVBAを取り入れたい方は、ぜひお試しください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次