VBA

複数シートを1つのシートに纏めるマクロ

複数シートに分かれているデータをひとまとめにするマクロです。

月々の販売データ、生産データなどが月別に分かれている場合などに使えます。

列数さえ同じであれば、列数がどれだけ多くても使えます。

Sub 複数シート統合マクロ()
    
    'シート数はintegerとして「i」に代入
    '行数はデータ量が大きい場合に備え、longとして変数に代入
    Dim i As Integer, a, 最終行a, 最終行b As Long
        
    'シートの一番右に「まとめ」シートを追加
    Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = Format(Now(), "まとめ")
     
    '1番のシートのデータを全コピペ
    最終行a = Sheets(1).Range("A1").End(xlDown).Row
    Worksheets(1).Rows("1:" & 最終行a).Copy
    Sheets("まとめ").Cells(1, 1).PasteSpecial
      
    'シート数をカウント
    i = Sheets.Count
     
    '2シート目移行、2行目から最終行までのデータをコピペ
    For a = 2 To i - 1
         
      最終行a = Worksheets(a).Range("A1").End(xlDown).Row
      
      'シート内のデータが空欄ならば飛ばす
      If 最終行a < 10000 Then
      
          Worksheets(a).Rows("2:" & 最終行a).Copy
         
          '貼り付け先のまとめシートの最終行を読み取り、その1行下に貼り付け
          最終行b = Worksheets("まとめ").Range("A1").End(xlDown).Row
      
          Sheets("まとめ").Cells(最終行b + 1, 1).PasteSpecial
    
      End If
        
    Next a
    
    Cells(1, 1).Select
    MsgBox ("シート" & i - 1 & "つ分のデータを統合しました")
        
End Sub