
あちこちに散らばったExcelの表、一つにまとめたいけど、毎回コピペは面倒…

こんなお悩み、抱えていませんか?
今回は、そんな悩みを一瞬で解決してくれるExcelの超便利関数「VSTACK関数」を徹底解説します。
VSTACK関数って何?いつ使うの?
VSTACK関数は「データを縦に積み重ねる」魔法の呪文!
「VSTACK」は、「Vertical(垂直)」と「Stack(積み重ねる)」を組み合わせた言葉です。
その名の通り、複数の表やデータ範囲を縦方向にまとめて、一つの大きな表にしてくれる関数なんです。

イメージとしては、バラバラになっているブロックを、上から順番にどんどん積み重ねていく感じだね!
項目 | 2024年4月売上 |
商品A | 100 |
商品B | 150 |
項目 | 2024年5月売上 |
商品A | 120 |
商品B | 180 |


この図のように、VSTACK関数を使えば、手作業でコピペする手間なしに、あっという間にデータを統合できます。
VSTACK関数はどんな時に役立つの?

VSTACK関数は、特に以下のような場面で大活躍します!

手作業でコピペしていると、貼り忘れや貼り間違いなどのミスが起こりがちですよね。VSTACK関数を使えば、そうしたヒューマンエラーを防ぎ、正確かつスピーディーに作業を進めることができます!
VSTACK関数が使えるExcelのバージョンは?
残念ながら、VSTACK関数はすべてのExcelで使えるわけではありません。
この関数は、Microsoft 365のExcel、またはExcel 2024、そしてWeb版のExcelで利用できます。もしお使いのExcelがこれら以外の古いバージョンだと、VSTACK関数は使えないのでご注意くださいね。
VSTACK関数の基本的な使い方をマスターしよう!

まずは、一番基本となる「同じシート内にある複数の表をまとめる方法」から見ていきましょう。
書式(関数の形)はとってもシンプル!
VSTACK関数の書式は、たったこれだけです。
=VSTACK(配列1, [配列2], …)
- 配列1: まず最初に、結合したい**一番目の範囲(表の場所)**を指定します。
- [配列2], …: その後に、カンマ(
,
)で区切って、結合したい二番目以降の範囲をどんどん追加していきます。いくつでも追加できますよ!
具体例で見てみよう!同じシート内の表をまとめる

今回は、以下のような「商品A」と「商品B」の売上データを使って説明します。
商品Aの売上(A1:C3)
A | B | C | |
1 | 日付 | 商品名 | 売上 |
2 | 2025/7/1 | 商品A | 1000 |
3 | 2025/7/2 | 商品A | 1200 |
商品Bの売上(A5:C7)
A | B | C | |
5 | 日付 | 商品名 | 売上 |
6 | 2025/7/1 | 商品B | 800 |
7 | 2025/7/3 | 商品B | 950 |

【手順1】結果を表示したいセルを選ぶ
まとめた表を表示させたいセルをクリックします。今回はA10セルにまとめてみましょう。
【手順2】「=VSTACK(」と入力する
A10セルに「=VSTACK(」と入力します。

【手順3】結合したい範囲を指定する
まずは「商品Aの売上」の範囲、A1:C3をマウスでドラッグして選択します。
範囲を選択したら、キーボードの「,」(カンマ)を入力します。

【手順4】次の範囲を指定する
次に「商品Bの売上」の範囲、A6:C7をマウスでドラッグして選択します。
【手順5】カッコ「)」を閉じてEnter!
すべての範囲を選択し終わったら、キーボードの「)」(閉じカッコ)を入力してEnterキーを押します。
すると…


このように、2つの表が一つにまとまって表示されました!
VSTACK関数のすごい機能「スピル」とは?
VSTACK関数のような新しい関数は「スピル機能」という特別な能力を持っています。
これは、数式を入力したたった一つのセルから、結果が複数行・複数列にわたって自動的にバーッと展開される機能のことです。
あなたがA10セルに数式を入力しただけで、A10セルからA15セルまで勝手にデータが広がったのは、このスピル機能のおかげなんです。
もしデータの一部を修正したい場合は、一番最初に数式を入力したA10セルだけを編集すればOKです。他のセルは触らなくても自動で更新されます。とっても便利ですよね!
【本題】複数のシートに分かれた表を一つにまとめる方法

さて、いよいよ本題です!
「商品A」の売上と「商品B」の売上が、それぞれ別のシートに分かれている場合を想定して、それらを一つのシートにまとめる方法を見ていきましょう。
【準備】複数のシートにデータを用意しよう
今回は、以下のようにシートを分けてデータを作成します。
シート名:「商品A_売上」
A | B | C | |
1 | 日付 | 商品名 | 売上 |
2 | 2025/7/1 | 商品A | 1000 |
3 | 2025/7/2 | 商品A | 1200 |

シート名:「商品B_売上」
A | B | C | |
1 | 日付 | 商品名 | 売上 |
2 | 2025/7/1 | 商品B | 800 |
3 | 2025/7/3 | 商品B | 950 |

そして、まとめた結果を表示させるための新しいシート「集計結果」を用意しておきましょう。
【手順1】「集計結果」シートで数式を入力するセルを選ぶ
まとめた表を表示させたい「集計結果」シートのセルをクリックします。
今回はA1セルにまとめてみましょう。
【手順2】「=VSTACK(」と入力する
A1セルに「=VSTACK(」と入力します。

【手順3】最初のシートの範囲を指定する
シートタブで「商品A_売上」シートをクリックして移動します。

そして、「商品A_売上」シートのA1:C3の範囲をマウスでドラッグして選択します。
すると、数式バーには=VSTACK(‘商品A_売上’!A1:C3のように、シート名が自動で入ります。
範囲を選択したら、キーボードの「,
」(カンマ)を入力します。
【手順4】次のシートの範囲を指定する
次にシートタブで「商品B_売上」シートをクリックして移動します。
(画像挿入:シートタブで「商品B_売上」が選択された状態のExcel画面)
そして、「商品B_売上」シートのA2:C3の範囲をマウスでドラッグして選択します。
数式バーは=VSTACK(‘商品A_売上’!A1:C3,’商品B_売上’!A2:C3のようになります。

【手順5】カッコ「)」を閉じてEnter!
すべての範囲を選択し終わったら、キーボードの「)」(閉じカッコ)を入力してEnterキーを押します。
すると、自動的に「集計結果」シートに戻り、このようにまとめて表示されます!


これで、複数のシートに分かれていた表が、たった一つのシートにまとまりました!
【応用技】シート名を連続して指定する「串刺し参照」

もし、たくさんのシートをまとめていて、それらのシートが連続して並んでいる場合は、「串刺し参照」という便利な方法で範囲を指定できます。
例えば、「商品A_売上」シートから「商品C_売上」シートまで連続してデータをまとめたい場合、数式はこうなります。
=VSTACK(‘商品A_売上’:’商品C_売上’!A1:C3)
これは、「商品A_売上」シートから「商品C_売上」シートまでのすべてのシートのA1:C3範囲をまとめてね、という意味になります。
ただし、この方法は参照するシートのセル範囲(例: A1:C3)がすべて同じ形式である場合のみ有効です。
異なる形式のデータが混ざっていると、うまくいかないことがあるので注意してくださいね。
VSTACK関数を使う上での注意点とコツ
VSTACK関数はとっても便利ですが、いくつか知っておきたい注意点や、さらに使いこなすためのコツがあります。
列数が異なると「#N/A」エラーが出ちゃうかも!
VSTACK関数で複数の範囲を結合する際、もしそれぞれの範囲の列の数がバラバラだと、列数が足りない部分に「#N/A」というエラーが表示されてしまいます。
例えば、
- 表1: 「日付」「商品名」「売上」の3列
- 表2: 「商品名」「売上」の2列
というように列数が違う場合、表2をまとめたときに「日付」の列が空になるので、そこに「#N/A」と表示されてしまう、という感じです。
このエラーを避けたい場合は、結合するすべての表の列数を同じにしておくのが一番です。
もしどうしても列数が違う表をまとめたい場合は、IFERROR関数などと組み合わせて、エラーを空白にしたり、任意の文字に置き換えたりする方法もあります。
=IFERROR(VSTACK(A1:C3, D1:E3),””)
データが増えるたびに手動で範囲を直すのは面倒…「テーブル機能」が超おすすめ!
先ほど、セルの範囲(例: A1:C3)を直接指定してVSTACK関数を使いましたよね。
でも、もし毎月新しいデータが追加される場合、そのたびにVSTACK関数の範囲をA1:C3からA1:C5のように手動で修正するのは面倒です。
そこで大活躍するのが、Excelの「テーブル機能」です!
テーブル機能とは?
表の範囲を「テーブル」として設定することで、新しい行や列を追加すると、自動的にその範囲が拡張されるようになる便利な機能です。
このテーブル機能をVSTACK関数と組み合わせると、データの追加があっても自動的に結果に反映されるため、数式を一切修正する必要がなくなります!
【手順】表をテーブルに変換する方法
- データがある範囲(例:
A1:C3
)を選択します。 - 「挿入」タブをクリックし、「テーブル」を選択します。
- 「テーブルの作成」ダイアログが表示されたら、「先頭行をテーブルの見出しとして使用する」にチェックが入っていることを確認し、「OK」をクリックします。

これで、表がテーブルに変換され、テーブル名が自動で付きます(例: テーブル1、テーブル2)。
VSTACK関数でテーブルを結合する
テーブルに変換したら、VSTACK関数ではセルの範囲ではなく、テーブル名を指定します。
例えば、先ほどの「商品A_売上」の表を商品A_テーブル、「商品B_売上」の表を商品B_テーブルという名前にした場合、数式はこうなります。
=VSTACK(商品A_テーブル, 商品B_テーブル)


これで、それぞれのテーブルに新しい行を追加しても、自動的にVSTACK関数の結果に反映されるようになります。とってもスマートですよね!
他の関数と組み合わせてもっと便利に!

VSTACK関数は単体でも十分便利ですが、他の関数と組み合わせることで、さらに便利なデータ処理が可能になります。
このように、VSTACK関数を起点として、さまざまなデータ加工ができるようになります。
VSTACK関数であなたのExcel作業をもっと効率的に!

今回は、ExcelのVSTACK関数について、基本的な使い方から、複数のシートに分かれた表を一つにまとめる方法、そして便利な活用術や注意点まで、詳しく解説しました。
もし「もっとこんなことできる?」といった疑問があれば、いつでも聞いてくださいね。
コメント