ExcelのVSTACK関数の使い方|複数の表を縦に結合する方法

スポンサーリンク

毎月の売上データを支店ごとにまとめていますか?
「東京」「大阪」「名古屋」と別々の表をコピペで結合する作業、地味に面倒ですよね。

しかも手作業だとミスが起きやすいです。
行がズレたり、データを貼り忘れたり。

ExcelのVSTACK関数を使えば、この悩みを一発で解決できます。
数式ひとつで複数の表を縦にピタッと結合してくれますよ。

この記事では、VSTACK関数の基本から実践的な使い方まで、わかりやすく解説します。

VSTACK関数とは?複数の表を縦方向に結合する関数

VSTACK関数は、複数の表(配列)を縦方向に結合する関数です。
読み方は「ブイスタック」。
「V」はVertical(垂直)、「STACK」は積み重ねるという意味です。

たとえば、支店ごとに分かれた売上表を考えてみてください。
東京支店の表の下に大阪支店の表を、さらにその下に名古屋支店の表を積み重ねるイメージです。

これまでは手作業でコピー&ペーストしていた作業が、数式1つで完了します。
しかも元データが更新されると、結合結果も自動で更新されますよ。

対応バージョンは以下のとおりです。

バージョン対応状況
Microsoft 365対応
Excel 2024対応
Excel 2021以前非対応

お使いのバージョンが対応しているか、あらかじめ確認しておきましょう。

VSTACK関数の基本的な書き方(構文・引数)

VSTACK関数の構文はとてもシンプルです。

=VSTACK(配列1, [配列2], ...)

結合したい表を、カンマ区切りで順番に指定するだけです。
引数は最大254個まで指定できます。

引数:配列(array)の指定方法

引数に指定できるものは以下の3パターンです。

  • セル範囲: A2:D10 のような通常の範囲指定
  • 別シートの範囲: 東京!A2:D10 のようにシート名付きで指定
  • 配列定数: {1,2,3} のような直接入力の配列

実務では、セル範囲や別シートの範囲を使うことがほとんどです。
支店別にシートが分かれている場合は、シート名を付けて指定しましょう。

戻り値:スピル(動的配列)で結果が展開される

VSTACK関数の結果はスピルで展開されます。

スピルとは、1つのセルに数式を入力するだけで、結果が隣接セルに自動展開される仕組みです。
数式を入力するのは先頭の1セルだけでOK。
残りのセルには自動で値が表示されます。

スピル範囲のセルを選択すると、青い枠線が表示されます。
この枠線がスピルの目印ですよ。

VSTACK関数の使い方を実例で解説

ここからは、支店別売上表を使って具体的な使い方を見ていきましょう。

基本:2つの表を縦に結合する

東京支店と大阪支店の売上表を縦に結合してみます。

サンプルデータ

東京支店(Sheet1のA2:D4):

日付商品名売上金額担当者
4/1ノートPC150,000佐藤
4/2モニター45,000田中
4/3キーボード8,000佐藤

大阪支店(Sheet2のA2:D4):

日付商品名売上金額担当者
4/1マウス3,000山本
4/2ノートPC180,000鈴木
4/3プリンター35,000山本

数式

=VSTACK(Sheet1!A2:D4, Sheet2!A2:D4)

これだけで、2つの表が縦にきれいに結合されます。
ヘッダー行を除いたデータ部分だけを指定するのがポイントです。

3つ以上の表をまとめて結合する

支店が3つ以上ある場合も、引数を追加するだけです。

=VSTACK(東京!A2:D10, 大阪!A2:D10, 名古屋!A2:D10)

東京・大阪・名古屋の3シートを一気に結合できます。
引数はカンマで区切って、どんどん追加してください。

シートが増えても数式に追加するだけなので、管理がラクですよ。

列数が異なる表を結合するとどうなる?(#N/Aエラー対策)

結合する表の列数が異なる場合、少し注意が必要です。
VSTACK関数は、不足する列を#N/Aエラーで自動的に埋めます。

たとえば、4列の表と3列の表を結合すると、3列の表側の4列目に#N/Aが入ります。

この#N/Aを消したい場合は、IFERROR関数で囲みましょう。

=IFERROR(VSTACK(Sheet1!A2:D5, Sheet2!A2:C5), "")

これで、#N/Aの部分が空白に置き換わります。
列数が異なる表を扱うときは、セットで覚えておいてくださいね。

VSTACK関数とHSTACK関数の違い

VSTACK関数とよく比較されるのがHSTACK関数です。
どちらも表を結合する関数ですが、方向が違います。

項目VSTACKHSTACK
結合方向縦(下に積み重ねる)横(右に並べる)
語源Vertical StackHorizontal Stack
主な用途月別・支店別の表を1つにまとめる項目(列)を横に追加する
行数・列数の不一致時不足列を#N/Aで埋める不足行を#N/Aで埋める

使い分けはシンプルです。

  • 行(データ件数)を増やしたい → VSTACK
  • 列(項目)を増やしたい → HSTACK

実務では「月ごとの売上データを縦に結合」というケースが多いので、VSTACKの出番が多いですよ。

VSTACK関数×他の関数の組み合わせテクニック

VSTACK関数は、他の関数と組み合わせると真価を発揮します。
ここでは実務で特に便利な2パターンを紹介します。

FILTER関数と組み合わせて結合後に絞り込む

複数の表を結合した後、条件に合うデータだけ抽出したいことがありますよね。
そんなときはFILTER関数と組み合わせましょう。

たとえば、売上金額が10,000円以上のデータだけを抽出する場合です。

=FILTER(VSTACK(Sheet1!A2:D50, Sheet2!A2:D50), VSTACK(Sheet1!C2:C50, Sheet2!C2:C50)>=10000)

ちょっとむずかしく見えますが、やっていることはシンプルです。
VSTACKで結合した表に対して、FILTERで条件を指定しているだけですよ。

FILTER関数の条件にもVSTACKが必要な点に注目してください。
条件の範囲もデータと同じように結合するのがコツです。

SORT関数と組み合わせて結合後に並べ替える

結合したデータを特定の列で並べ替えたい場合は、SORT関数が便利です。

売上金額(3列目)の降順で並べ替えるには、次のように書きます。

=SORT(VSTACK(Sheet1!A2:D50, Sheet2!A2:D50), 3, -1)

第2引数の 3 は並べ替えの基準列(売上金額列)です。
第3引数の -1 は降順を意味します。

結合と並べ替えが1つの数式で完結するので、作業効率がグッと上がります。
ぜひ試してみてください。

VSTACK関数でよくあるエラーと対処法

VSTACK関数を使っていると、エラーに遭遇することがあります。
代表的な2つのエラーと対処法を押さえておきましょう。

#SPILL!エラー:結果の出力先がふさがっている

#SPILL!エラーは、スピルの展開先に問題がある場合に発生します。
主な原因は次の4つです。

  • スピル先のセルにデータがある: 空のセルを確保する
  • 結合セルがある: スピル範囲内の結合を解除する
  • テーブル内で使用している: テーブル外のセルに数式を入力する
  • シートの端を超える: 出力先の位置を上に移動する

最も多いのは、スピル先にデータが残っているケースです。
数式を入力するセルの下に、十分な空きスペースを確保してください。

エラー値の詳しい解説はExcelエラー値一覧もあわせてどうぞ。

#NAME?エラー:対応バージョンの確認

#NAME?エラーが出る場合は、バージョンを確認しましょう。
VSTACK関数はMicrosoft 365またはExcel 2024でのみ使えます。

Excel 2021以前では関数名が認識されず、#NAME?エラーになります。

バージョンの確認方法は、ファイル → アカウントの画面です。
「Microsoft 365」または「Excel 2024」と表示されていれば対応していますよ。

まとめ

VSTACK関数は、複数の表を縦方向に結合する関数です。
この記事のポイントをおさらいしましょう。

  • 構文: =VSTACK(配列1, [配列2], ...) で簡単に結合できる
  • スピル: 数式は1セルに入力するだけで結果が自動展開される
  • 列数不一致: #N/Aで埋まるので、IFERRORで空白に置換する
  • HSTACK関数との違い: VSTACKは縦、HSTACKは横に結合する
  • 組み合わせ: FILTER関数やSORT関数と使えば、結合+加工が1つの数式で完結する
  • 対応バージョン: Microsoft 365またはExcel 2024が必要

支店別の売上データを毎月コピペでまとめていた方は、ぜひVSTACK関数を活用してみてください。
一度数式を組んでしまえば、翌月からの作業がぐっとラクになりますよ。

タイトルとURLをコピーしました