• 公開日:

エクセルで複数シートを縦に並べる方法

この記事では、エクセルで複数シートを縦に並べる方法をご紹介します。

複数のシートを縦に並べることで、データが見やすく比較しやすくなります。

「複数シートを1シートに縦に並べてまとめる方法」「複数ウィンドウを上下に並べて各シートを比較しやすくする方法」を画像を用いて説明しています。

エクセルで複数シートを縦に並べる方法

エクセルで複数シートを縦に並べる方法を「複数シートを1シートに縦に並べる方法」「複数ウィンドウを縦に並べる方法」に分けてご紹介します。

複数シートを1シートに縦に並べる方法

複数シートを「1シート」に縦に並べる方法を4つご紹介します。

  • VSTACK関数を使用する
  • VBAを使用する
  • INDIRECT関数を使用する
  • パワークエリを使用する

VSTACK関数を使用する

VSTACK関数は、配列を垂直方向に順番に結合して、大きな配列として返す関数です。

書式は「=VSTACK(array1,[array2],...)」のように記述します。

VSTACK関数を使って、複数シートを「1シート」に縦に並べる方法は以下のとおりです。

VSTACK関数で縦に並べる例

今回は、「Aチーム」「Bチーム」「Cチーム」シートのデータを「プロジェクト進行状況」シートのA列~E列に縦に並べて表示します。

集計するシートを用意する

まず、各シートのデータをまとめるシート(例:「プロジェクト進行状況」シート)を用意します。

元データの書式は反映されないため、罫線や色などを設定しておきます。

テーブルを作成しておく

また、各シートの表には「テーブル1」「テーブル2」「テーブル3」という名前でテーブルが作成されています。

テーブルにすることで、表にデータを追加しても反映されるようになります。STEP 8、STEP 9を参照ください。

VSTACK関数を入力する

各シートのデータを縦に並べたいセル(例:A3セル)に「=VSTACK(」と入力します。

配列1を指定する

元データの範囲を指定します。

「テーブル1,」と入力して、配列1を指定します。

配列2、配列3を指定する

配列2、配列3を指定します。「テーブル2,テーブル3)」と入力してEnterを押します

結果が算出された

各シートのデータを縦に並べて表示することができました。

元データと連動しているので、試しに元データにデータを追加してみます。

試しにデータを追加する

「Cチーム」シートを選択し、②最終行にデータ(例:追加)を入力します。

反映された

「プロジェクト進行状況」シートを選択して戻ると、入力したデータが反映されているのがわかります。

VSTACK関数を使って、複数シートを1シートに縦に並べることができました。

VBAを使用する

VBAを使って、複数シートを「1シート」に縦に並べる方法は以下のとおりです。

複数シートを1シートにまとめる作業が自動化できます。

VBAで縦に並べる例

今回は、「Aチーム」「Bチーム」「Cチーム」シートのデータを「プロジェクト進行状況」シートのA列~E列に縦に並べて表示します。

この方法であれば、元データの書式も反映され、テーブルを作成しなくても追加データが反映されるようになります。

開発タブを表示しておく

VBAの設定には「開発タブ」が必要ですが、デフォルトでは表示されていないため下記の記事を参考に表示させましょう。

エクセルの開発タブを表示する方法

Visual Basicを選択する

マクロを設定します。

先頭シート(例:「プロジェクト進行状況」シート)、②開発タブ、③「Visual Basic」の順に選択します。

標準モジュールを選択する

「Microsoft Visual Basic for Applications」ダイアログボックスが表示されます。

「挿入」、②「標準モジュール」の順に選択します。

VBAを入力する

「標準モジュール」が開きました。

以下のコードをコピーして貼り付けてください。「2枚目以降のシートを順に結合して先頭シートにコピー&ペーストしていく」という意味のコードです。

Sub プロジェクト進行状況()
    Dim ws As Worksheet
    Dim destSheet As Worksheet
    Dim lastRow As Long
    Dim i As Long
    
    ' 結合先のシートを取得(シート1と仮定)
    Set destSheet = ThisWorkbook.Sheets(1)
    destSheet.Cells.Clear ' 既存のデータをクリア
    
    ' 各シートをループ
    For i = 2 To ThisWorkbook.Sheets.Count
        Set ws = ThisWorkbook.Sheets(i)
        
        ' コピー元のシートの使用範囲をコピー
        ws.UsedRange.Copy
        
        ' 結合先シートの最終行を取得
        lastRow = destSheet.Cells(destSheet.Rows.Count, "A").End(xlUp).Row
        
        ' ペースト位置を設定
        If lastRow > 1 Then
            lastRow = lastRow + 2 ' 見やすいように空行を追加
        End If
        
        ' 結合先シートにペースト
        destSheet.Cells(lastRow, 1).PasteSpecial Paste:=xlPasteAll
        
        ' クリップボードをクリア
        Application.CutCopyMode = False
    Next i
    
    ' 列幅を自動調整
    destSheet.Columns.AutoFit
End Sub

デフォルトでは先頭シート(Sheet1)にデータを結合しますが、任意のシートに変更できます。

例えば、結合先のシート名を「Summary」に変更したい場合は、8行目の「Set destSheet = ThisWorkbook.Sheets(1)」の”1”の部分を"Summary"に変更しましょう。

また、シート間に挿入する空白行の数を変更したい場合は、23行目の「lastRow = lastRow + 2」の"2"を任意の数字に変更してください。

保存する

コードを貼り付けたらマクロを保存します。

ファイルタブ、②上書き保存の順に選択します。

「戻る」ボタンを押す

「Microsoft Excel」ダイアログボックスが表示されます。

マクロを保存しようとしているExcelがすでに.xlsx拡張子で保存されている場合は、「次の機能はマクロなしのブックに保存できません」と表示されます。

マクロ有効ブックとして保存するので「戻る」ボタンを押します

保存する

「名前を付けて保存」ダイアログボックスが表示されます。

保存先(例:デスクトップ)を選択し、②ファイル名(例:プロジェクト進行状況)を入力します。③ファイルの種類でExcel マクロ有効ブックを選択し、④「保存」ボタンを押します

「マクロ」を選択する

以上でマクロの設定が完了しました。

シートに戻り、①開発タブ、②「マクロ」の順に選択します。

マクロを実行する

「マクロ」ダイアログボックスが表示されました。

作成したマクロ(例:プロジェクト進行状況)を選択し、②「実行」ボタンを押します

VBAで縦に並べられた

各シートのデータを縦に並べて表示することができました。

試しに元データにデータを追加してみます。

データを追加する

「Cチーム」シートを選択し、②最終行にデータ(例:追加)を入力します。

追加された

「プロジェクト進行状況」シートを選択して再度マクロを実行すると、入力したデータが反映されます。

VBAを使って、複数シートを1シートに縦に並べることができました。

INDIRECT関数を使用する

INDIRECT関数を使って、複数シートを「1シート」に縦に並べることもできます。

INDIRECT関数は、セルの参照を文字列で指定する関数です。セルだけではなく、他のシートも参照することができます。

書式は「=INDIRECT(参照文字列,[参照形式])」のように記述します。

使い方については、以下をご参照ください。

ExcelのINDIRECT関数の使い方|セルや他のシートを参照する

INDIRECT関数で縦に並べる例

上の画像はINDIRECT関数を使って、複数シートの同じセルを「プロジェクト進行状況」シートに縦に並べた例です。

B3セルには「=INDIRECT(A3&"!E1")」が入っており、「Aチーム」「Bチーム」「Cチーム」シートのE1セルのデータを表示しています。

パワークエリを使用する

パワークエリを使って、複数シートを「1シート」に縦に並べることも可能です。

パワークエリとは、データを集計したり整理整頓したりできるエクセルの機能です。

パワークエリの使い方については、以下の記事の「パワークエリを使って複数シート同セルを別シートで列に表示する方法」セクションをご参照ください。

Excelで複数シート同セルを別シートで列に表示する方法

パワークエリで縦に並べる例

上の画像はパワークエリを使って、複数シートのデータを別ブックの「Sheet1」シートにまとめた例です。

「Aチーム」「Bチーム」「Cチーム」シートを含むブックを取り込み、新しいブックにパワークエリを使って表示しています。

複数ウィンドウを縦に並べる方法

複数シートの「ウィンドウ」を縦に並べる方法をご紹介します。

各シートをウィンドウで開いて並べると、データを比較しやすくなります。

複数ウィンドウを縦に並べる

今回は「Aチーム」「Bチーム」「Cチーム」のシートを3つのウィンドウで開き、縦に並べて表示します。

「新しいウィンドウを開く」を選択する

Excelでブックを開きます。このブックが1つ目のウィンドウになります。

2つ目のシート(例:「Bチーム」シート)、②表示タブ、③「新しいウィンドウを開く」の順に選択します。

別シートのウィンドウを開く

2つ目のウィンドウが開きました。

3つ目のシート(例:「Cチーム」シート)、②表示タブ、③「新しいウィンドウを開く」の順に選択します。

「整列」を選択する

3つ目のウィンドウが開きました。

次に、ウィンドウを縦に並べます。①表示タブ、②「整列」の順に選択します。

「上下に並べて表示」を選択する

「ウィンドウの整列」ダイアログボックスが表示されます。

「上下に並べて表示」を選択し、②「OK」ボタンを押します

複数シートのウィンドウを縦に並べられた

複数シートをウィンドウごとに縦に並べて表示することができました。