HOME > 即効テクニック > Excel VBA > シート操作関連のテクニック > 複数のシートのデータを1つのシートにコピーする

複数のシートのデータを1つのシートにコピーする|Excel VBA

シート操作関連のテクニック

複数のシートのデータを1つのシートにコピーする

(Excel 2000/2002/2003/2007/2010/2013/2016)

ブック内にある複数のシートのデータを1つのシートに集約する方法をご紹介します。

次のサンプルは、「AllData」シートに他のシートのデータをコピーします。
すべてのシートは同じ形式でデータが入力されていて、1行目は見出し行になっているものとします。

最初に、コピー先となる「AllData」シートの2行目以降のセルをクリアします。
各シートの2行目以降のデータを、「AllData」シートの最終行の次の行にコピーします。
この処理を「AllData」シートを除くすべてのシートについて行い、最後に「AllData」シートをA列でソートします。

Sub Sample()
    Dim sWS As Worksheet  'データシート(コピー元)
    Dim dWS As Worksheet  '集約用シート(コピー先)
  
    Set dWS = Worksheets("AllData")
    
    '集約用シートの2行目以降を削除
    dWS.UsedRange.Offset(1, 0).Clear
    
    '各シートの2行目以降のデータを、集約用シートの末尾にコピー
    For Each sWS In Worksheets
        If sWS.Name <> dWS.Name Then
            With sWS.UsedRange
            
                'コピー元シートにデータが1件以上ある場合
                If .Rows.Count > 1 Then
                    .Offset(1, 0).Resize(.Rows.Count - 1).Copy _
                        Destination:=dWS.Cells(Rows.Count, 1). _
                                        End(xlUp).Offset(1, 0)
                End If
                
            End With
        End If
    Next sWS
    
    '集計用シートをA列で並べ替え
    dWS.UsedRange.Sort Key1:=Range("A1"), Header:=xlYes
End Sub