大体でIT

-ちょっと使えるネタを紹介-

大体でIT

Excel VBAで、複数シートを1つのシートにまとめるには、シートをループしてまとめ用シートに値を転記するとできます。複数シートをまとめる方法について、マスターしていきましょう。

はじめに

この記事では、複数シートを1つのシートにまとめる方法について、ご紹介します。

やり方としては、シートをループして、まとめ用のシートに転記していく、という感じになります。

シート名も取得してまとめたいという場合には、「.Name」を使うとできます。

複数シートをまとめる方法について、マスターしていきましょう。

では、複数シートを1つのシートにまとめる方法について、解説していきます。

この記事を読むメリット

  • 複数シートを1つのシートにまとめることができるようになります。

本記事の内容を動画でまとめています

目次から見たい項目へ移動すると便利ですよ。

目次

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

複数シートを1つのシートにまとめてみます。

やりたい内容

やりたい内容は、複数シートを1つのシートにまとめたい、ということになります。

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

複数シートを1つのシートにまとめたいです。

複数シートを1つのシートにまとめたいです

こちらのまとめシートに、複数シートをまとめたいということになります。

まとめシートに複数シートをまとめたいです

まとめたイメージはこんな感じになります。

まとめたイメージ

こんな感じで複数シートを、1つのシートにまとめたいです

では、複数シートをまとめる方法について、解説していきます。

シートをループして「.Copy」で転記

やり方としては、シートをループして、「.Copy」で転記していく、という感じになります。

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

複数シートを1つのシートにまとめていきます

複数シートを1つのシートにまとめるVBAコードは、次のようになります。

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

VBAコードが長くなってしまったので、「Sheets("まとめ").Cells(Rows.Count, "A").End(xlUp)」の部分をオブジェクトとして、変数に入力しておきます。

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のデータ部分が、まとめシートに転記されます。

Sheet1のデータ部分が、まとめシートに転記されます

Sheet2のデータ部分が、まとめシートに転記されます。

Sheet2のデータ部分が、まとめシートに転記されます

Sheet3のデータ部分が、まとめシートに転記されます。

Sheet3のデータ部分が、まとめシートに転記されます

これで、複数シートを、1つのシートにまとめられます。

1つのシートにまとめられた

複数シートを、1つのシートにまとめられました

複数シートを、1つのシートにまとめられました。

商品ごとのデータを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

「シート名」を入力するセル範囲を「.Resize(.Rows.Count-1)」で、貼り付けた行のデータ分だけ入力するのがポイントになります。

では、ポイントごとにVBAコードを実行していきます。

シート「A」のシート名とデータを転記

まずは、シート「A」のデータ部分を転記します。

シート「A」のデータを転記します

転記した行数分だけ、「シート名」入力します。

シート「A」のシート名を入力します

という感じで、「シート名」を入力することができます。

他のシートについても同じように転記していきます。

シート「B」のシート名とデータを転記

シート「B」のデータ部分を転記します。

シート「B」のデータを転記します

転記した行数分だけ、「シート名」入力します。

シート「B」のシート名を入力します

次は、シート「C」のシート名とデータを転記していきます。

シート「C」のシート名とデータを転記

シート「C」のデータ部分を転記します。

シート「C」のデータを転記します

転記した行数分だけ、「シート名」入力します。

シート「C」のシート名を入力します

これで、複数シートの「シート名」と「データ」をまとめることができます。

1つのシートにまとめられた

複数シートの「シート名」と「データ」をまとめることができました

複数シートの「シート名」と「データ」をまとめることができました。

こんな感じで、複数シートの「シート名」もまとめることができます。

おわりに

この記事では、複数シートを1つのシートにまとめる方法について、ご紹介しました。

やり方としては、シートをループして、まとめ用のシートに転記していく、という感じになります。

シート名も取得してまとめたいという場合には、「.Name」を使うとできます。

複数シートをまとめる方法について、マスターしていきましょう。

参考になればと思います。最後までご覧くださいまして、ありがとうございました。

関連する記事から探す

カテゴリから探す

カテゴリから見たい項目を探すと便利ですよ。

サイト内を検索する

↓キーワードを入力する

アーカイブから探す