毎月の売上データを支店ごとにまとめていますか?
「東京」「大阪」「名古屋」と別々の表をコピペで結合する作業、地味に面倒ですよね。
しかも手作業だとミスが起きやすいです。
行がズレたり、データを貼り忘れたり。
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 | ノートPC | 150,000 | 佐藤 |
| 4/2 | モニター | 45,000 | 田中 |
| 4/3 | キーボード | 8,000 | 佐藤 |
大阪支店(Sheet2のA2:D4):
| 日付 | 商品名 | 売上金額 | 担当者 |
|---|---|---|---|
| 4/1 | マウス | 3,000 | 山本 |
| 4/2 | ノートPC | 180,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関数です。
どちらも表を結合する関数ですが、方向が違います。
| 項目 | VSTACK | HSTACK |
|---|---|---|
| 結合方向 | 縦(下に積み重ねる) | 横(右に並べる) |
| 語源 | Vertical Stack | Horizontal 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関数を活用してみてください。
一度数式を組んでしまえば、翌月からの作業がぐっとラクになりますよ。
