- 公開日:
エクセルで複数シートを縦に並べる方法
この記事では、エクセルで複数シートを縦に並べる方法をご紹介します。
複数のシートを縦に並べることで、データが見やすく比較しやすくなります。
「複数シートを1シートに縦に並べてまとめる方法」「複数ウィンドウを上下に並べて各シートを比較しやすくする方法」を画像を用いて説明しています。
エクセルで複数シートを縦に並べる方法
エクセルで複数シートを縦に並べる方法を「複数シートを1シートに縦に並べる方法」「複数ウィンドウを縦に並べる方法」に分けてご紹介します。
複数シートを1シートに縦に並べる方法
複数シートを「1シート」に縦に並べる方法を4つご紹介します。
- VSTACK関数を使用する
- VBAを使用する
- INDIRECT関数を使用する
- パワークエリを使用する
VSTACK関数を使用する
VSTACK関数は、配列を垂直方向に順番に結合して、大きな配列として返す関数です。
書式は「=VSTACK(array1,[array2],...)」のように記述します。
VSTACK関数を使って、複数シートを「1シート」に縦に並べる方法は以下のとおりです。

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

まず、各シートのデータをまとめるシート(例:「プロジェクト進行状況」シート)を用意します。
元データの書式は反映されないため、罫線や色などを設定しておきます。

また、各シートの表には「テーブル1」「テーブル2」「テーブル3」という名前でテーブルが作成されています。
テーブルにすることで、表にデータを追加しても反映されるようになります。STEP 8、STEP 9を参照ください。

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

元データの範囲を指定します。
「テーブル1,」と入力して、配列1を指定します。

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

各シートのデータを縦に並べて表示することができました。
元データと連動しているので、試しに元データにデータを追加してみます。

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

「プロジェクト進行状況」シートを選択して戻ると、入力したデータが反映されているのがわかります。
VSTACK関数を使って、複数シートを1シートに縦に並べることができました。
VBAを使用する
VBAを使って、複数シートを「1シート」に縦に並べる方法は以下のとおりです。
複数シートを1シートにまとめる作業が自動化できます。

今回は、「Aチーム」「Bチーム」「Cチーム」シートのデータを「プロジェクト進行状況」シートのA列~E列に縦に並べて表示します。
この方法であれば、元データの書式も反映され、テーブルを作成しなくても追加データが反映されるようになります。

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

「Microsoft Visual Basic for Applications」ダイアログボックスが表示されます。
①「挿入」、②「標準モジュール」の順に選択します。

「標準モジュール」が開きました。
以下のコードをコピーして貼り付けてください。「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 マクロ有効ブックを選択し、④「保存」ボタンを押します。

以上でマクロの設定が完了しました。
シートに戻り、①開発タブ、②「マクロ」の順に選択します。

「マクロ」ダイアログボックスが表示されました。
①作成したマクロ(例:プロジェクト進行状況)を選択し、②「実行」ボタンを押します。

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

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

「プロジェクト進行状況」シートを選択して再度マクロを実行すると、入力したデータが反映されます。
VBAを使って、複数シートを1シートに縦に並べることができました。
INDIRECT関数を使用する
INDIRECT関数を使って、複数シートを「1シート」に縦に並べることもできます。
INDIRECT関数は、セルの参照を文字列で指定する関数です。セルだけではなく、他のシートも参照することができます。
書式は「=INDIRECT(参照文字列,[参照形式])」のように記述します。
使い方については、以下をご参照ください。
ExcelのINDIRECT関数の使い方|セルや他のシートを参照する

上の画像はINDIRECT関数を使って、複数シートの同じセルを「プロジェクト進行状況」シートに縦に並べた例です。
B3セルには「=INDIRECT(A3&"!E1")」が入っており、「Aチーム」「Bチーム」「Cチーム」シートのE1セルのデータを表示しています。
パワークエリを使用する
パワークエリを使って、複数シートを「1シート」に縦に並べることも可能です。
パワークエリとは、データを集計したり整理整頓したりできるエクセルの機能です。
パワークエリの使い方については、以下の記事の「パワークエリを使って複数シート同セルを別シートで列に表示する方法」セクションをご参照ください。

上の画像はパワークエリを使って、複数シートのデータを別ブックの「Sheet1」シートにまとめた例です。
「Aチーム」「Bチーム」「Cチーム」シートを含むブックを取り込み、新しいブックにパワークエリを使って表示しています。
複数ウィンドウを縦に並べる方法
複数シートの「ウィンドウ」を縦に並べる方法をご紹介します。
各シートをウィンドウで開いて並べると、データを比較しやすくなります。

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

Excelでブックを開きます。このブックが1つ目のウィンドウになります。
①2つ目のシート(例:「Bチーム」シート)、②表示タブ、③「新しいウィンドウを開く」の順に選択します。

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

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

「ウィンドウの整列」ダイアログボックスが表示されます。
①「上下に並べて表示」を選択し、②「OK」ボタンを押します。

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