【Microsoft Excel】ワークシートを大量に作成する方法

Excelを使っていて、1つのブックの中に大量のワークシートを作成することはありませんか。

  • 1日分の情報を1シートに記載して、1ヶ月分を1ブックにまとめておく。
  • 1人分の情報を1シートに記載して、メンバー全員分を1ブックにまとめておく。

このような場合、1つのブックの中に30や40、あるいは、それ以上の数のワークシートを作成することになります。

ワークシートを増やすときは、以下の2つの方法を使うことが多いと思います。

  • 画面下部にあるシート見出しの右の「+」ボタンを押す。
  • Shift+F11キーを押す。

いずれも、新規ワークシートを1つ追加する方法です。この方法だとワークシートの追加自体は簡単にできるのですが、シートの名称を後から1つ1つ変えていく必要があり、非常に面倒です。

本記事では、名称を指定した上で大量のワークシートを作成する方法として、以下の2つを紹介します。

  1. ピボットテーブルを使用する方法
  2. マクロ(VBA)を使用する方法

ピボットテーブルを使用する方法

まず1つ目はピボットテーブルを使用する方法です。

「ピボットテーブルってデータ分析用の機能じゃないの?」と思った方もいるかもしれません。その通りなのですが、シートを作成するのにも使うことができるので、その方法を紹介します。

①作成したいシート名を縦に並べて記載します。
※1番上のセルに書いた名称のシートは作成されないので、2行目以降に作成したいシート名を記載しています。

作成するワークシート名を記載する

②入力したセルを選択し、「挿入」タブ→「ピボットテーブル」→「テーブルまたは範囲から」を選択します。

ピボットテーブルを作成する

③「OK」ボタンをクリックし、ピボットテーブルを作成します。

「テーブルまたは範囲からのピボットテーブル」ウィンドウで「OK」ボタンを押下

④シート名が記載されたフィールドをフィルターとして設定します。

シート名が記載されたフィールドをフィルターとして設定

⑤「ピボットテーブル分析」→「オプション」→「レポートフィルターページの表示」を選択します。

「レポートフィルターページの表示」 を選択

⑥「OK」ボタンを押下します。

「レポートフィルターページの表示」 で「OK」ボタンを押下

これで、①で記載していたすべてのシートが作成されました。
作成されたシートには、ピボットテーブルのフィルターが記載されているので、次以降の手順で削除します。

⑦作成されたシートをすべて選択し、A〜B列を選択します。

削除するフィルターを選択

⑧「ホーム」タブ→「クリア」→「すべてクリア」を選択します。

フィルタの内容をすべてクリア

⑨「ホーム」タブ→「削除」→「」を選択します。

フィルタが記載されていた列を削除

⑩①で作成したシート名の一覧、②で作成したピボットテーブルのシートを削除します。

不要なシートを削除

これで、完了です。

マクロ(VBA)を使用する方法

続いて、マクロ(VBA)を使用してワークシートを作成する方法です。

①作成したいシート名を縦に並べて記載します。
※1番上のセルに書いた名称のシートは作成されないので、2行目以降に作成したいシート名を記載しています。
※「ピボットテーブルを使用する方法」の①で作成したものと同様です。

作成するワークシート名を記載する

②「Alt」キーと「F8」キーを同時に押し、「マクロ」ウィンドウを表示します。

マクロウィンドウを表示する

③「マクロ名」に適当な名前を入力し、「作成」ボタンをクリックします。

マクロ名を入力し、「作成」ボタンをクリック

④表示されたウィンドウに書かれているコードを、以下の内容に書き換えます。
※もともと書いてあるものを消して、以下のコードを貼り付けてください。

【コード】

Option Explicit

Sub macro1()
    Const MAX_SHEET_NUMBER As Integer = 100
    Const SHEET_NAME_START_ROW As Integer = 2
    
    Dim i As Integer
    Dim listSheet As Worksheet
    
    i = SHEET_NAME_START_ROW
    Set listSheet = ActiveSheet
    
    Do While i <= MAX_SHEET_NUMBER + SHEET_NAME_START_ROW - 1 And _
             Not listSheet.Cells(i, 1).Value = ""
        
        Worksheets.Add After:=Worksheets(Worksheets.Count)
        ActiveSheet.Name = listSheet.Cells(i, 1).Value
        
        i = i + 1
    Loop
    
End Sub
VBAコードを貼り付ける場所

⑤3行目の「Sub」と書いてある行にカーソルを合わせ、実行ボタン(右向きの三角形のボタン)をクリックします。

カーソルを合わせる位置と実行ボタン

この時点でワークシートが作成されました。このままだと、使用したマクロがブックに残ってしまい、通常の形式(xlsx形式)で保存できないので、次以降の手順で削除しましょう。

⑥左の欄の「Module1」と書いてあるところを右クリックし、「Module1の解放」を選択します。

不要になったModuleの解放

⑦「削除する前にModule1をエクスポートしますか?」と聞かれるので、「いいえ」を選択します。

Moduleのエクスポートをしないよう選択

⑧画面右上の「×」ボタンをクリックして、ウィンドウを閉じます。

VBAのウィンドウを閉じる

これで、完了です。

おわりに

ワークシートを大量に作成するといったような機械的な作業は、手作業でやっていると、時間もかかる上にミスも発生するので、良いことがありません。

本記事で紹介した方法であれば、シートが50であっても100であっても大した時間をかけずに作業を完了することができます。

ぜひ有効活用してみてください。