複数のシートのデータを1つのシートにコピーする|Excel VBA |
ブック内にある複数のシートのデータを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