Sub TEST1()
'2つ目のシートから最終シートまでループ
For i = 2 To Sheets.Count
'データ部分のみを、まとめシートにコピー
With Sheets(i).Range("A1").CurrentRegion
.Resize(.Rows.Count - 1).Offset(1, 0).Copy Sheets("まとめ").Cells(Rows.Count, "A").End(xlUp).Offset(1, 0)
End With
Next
End Sub
Sub TEST2()
Dim A
'2つ目のシートから最終シートまでをループ
For i = 2 To Sheets.Count
'まとめシートの最終セルを取得
Set A = Sheets("まとめ").Cells(Rows.Count, "A").End(xlUp)
'データ部分のみを、まとめシートにコピー
With Sheets(i).Range("A1").CurrentRegion
.Resize(.Rows.Count - 1).Offset(1, 0).Copy A.Offset(1, 0)
End With
Next
End Sub
では、ポイントごとにVBAコードを実行してみます。
Sheet1~Sheet3のデータを転記
Sheet1のデータ部分が、まとめシートに転記されます。
Sheet2のデータ部分が、まとめシートに転記されます。
Sheet3のデータ部分が、まとめシートに転記されます。
これで、複数シートを、1つのシートにまとめられます。
1つのシートにまとめられた
複数シートを、1つのシートにまとめられました。
商品ごとのデータを1つのシートにまとめたい
商品ごとのデータを1つのシートにまとめる、というのをやってみます。
やりたい内容
やりたい内容は、シートのデータだけでなく、「シート名」もまとめたい、ということになります。
複数シートの「シート名」と「データ」をまとめたい
まとめたイメージは、次のようになります。
まとめたイメージ
今回の例のように、「商品」の値がシート名にのみ入力されているパターンの場合に使えます。
シートをループしてシート名とデータを転記
複数シートの「シート名」と「データ」を1つのシートにまとめていきます。
複数シートを1つのシートにまとめる
複数シートの「シート名」と「データ」を、1つのシートにまとめるVBAコードになります。
Sub TEST3()
Dim A
'2つ目のシートから最終シートまでループ
For i = 2 To Sheets.Count
'まとめシートの最終セルを取得
Set A = Sheets("まとめ").Cells(Rows.Count, "A").End(xlUp)
With Sheets(i).Range("A1").CurrentRegion
'データ部分をコピー
.Resize(.Rows.Count - 1).Offset(1, 0).Copy A.Offset(1, 1)
'シート名を入力
A.Offset(1, 0).Resize(.Rows.Count - 1) = Sheets(i).Name
End With
Next
End Sub