エクセルVBAで複数シートをコピーして1つのシートにまとめる!

エクセルで、複数のファイルにデータがある。その複数ファイルにある、シートのデータを1つのまとめたい!ということはないでしょうか。例えば、複数シートにあるデータを、全てまとめて集計しなければいけない、といった場合、1つ1つ手作業でコピーして1つのシートにまとめるのは、大変な作業です。シートの数が多ければ多いほど、時間がかかり、どれをコピーしたのかわからなくなってしまう、といったこともあります。そのような時、エクセルVBAで、複数シートをコピーして、1つのシートにまとめる方法があります。一発で、複数シートを1つのシートにまとめます。VBAを使うと、コピー間違いや、失敗はありません。今まで、大変だった作業が、あっという間にできてしまいます。

 

 

複数シートを1つのシートにまとめるとは?

エクセルのデータが複数のブック、または複数シートにあるとします。

その複数シートを、1つのシートにコピーしていって、データを1つにまとめることです。

例えば2つのファイルがあります。

1つのファイルには、本社の売上データ、もう1つのファイルには、茨城の売上データがあります。

本社の売上データ

 

茨城の売上データ

 

本社の売上データと茨城の売上データを、別シートにコピーして1つにまとめます。

 

 

複数シートを1つのシートにまとめる準備

エクセルVBAで、複数シートをコピーして、1つのシートにまとめる場合、2つのの場合があります。

① 複数ブックにシートがあって、その複数シートを別ブックにまとめる。

② ファイルに複数シートがあって、その複数シートを1つのシートにまとめる。

ここでは、②の、ファイルにある複数シートを、1つのシートにまとめる方法を紹介します。

①の場合は、別ブックにある複数のシートを、1つのファイルにコピーしておきましょう。

 

 

複数シートを1つのシートにまとめる

複数シートをコピーして、1つにまとめるシートを、「結合」シートとします。

エクセルVBAで、複数シートを1つにまとめるコードです。

Sub シートの結合()
Dim Msh As Worksheet      ‘   コピー元(コピーするシート)
Dim Wms As Worksheet     ‘   コピー先(結合するシート)

Set Wms = Worksheets(“結合”)

        ‘    コピー先の2行目以降を削除
Wms.UsedRange.Offset(1, 0).Clear
 
        ‘    コピー元のシートの2行目以降をコピーして結合していく
For Each Msh In Worksheets
If Msh.Name <> Wms.Name Then
With Msh.UsedRange

If .Rows.Count > 1 Then
.Offset(1, 0).Resize(.Rows.Count – 1).Copy _
Destination:=Wms.Cells(Rows.Count, 1). _
End(xlUp).Offset(1, 0)
End If

End With
End If
Next Msh

End Sub

複数シートを1つにまとめる

エクセルVBAで、複数シートをコピーして1つにまとめると、シートのコピーを1つだけ忘れた!同じシートをコピーしてしまって、データが重複している!といった失敗がありません。今まで、このような作業に大変な時間がかかってしまった、といったユーザには、このVBAで、これからの作業が楽になるのではないでしょうか。シートにボタンを作っていて、ボタンにこのVBAを登録すると、ボタンをクリックするだけで、複数シートを1つまとめることができます。別ブックにあるシートを、他のブックにコピーすることもできるので、ぜひ参考にしてください。

こちらの記事もご覧ください。⇒エクセルVBAで別ファイルにシートをコピーする方法!