「月ごとに分かれた売上リストを1つのシートにまとめるたびに、コピー&ペーストを12回繰り返している」「複数部門の名簿を縦に並べるたびに手作業が発生する」——そのような繰り返し作業を1つの数式で解決できるのがVSTACK関数とHSTACK関数です。
VSTACKは複数のセル範囲を縦方向(垂直)に連結し、HSTACKは横方向(水平)に連結します。どちらも結果をスピルとして自動展開するため、元データを更新するだけで統合済みリストがリアルタイムで更新されます。Microsoft 365のExcelに搭載された動的配列関数であり、MOS Excel 365 エキスパート(MO-211)の出題範囲にも含まれます。
本記事では、VSTACK・HSTACKの基本構文・引数の仕組み・実務シナリオ4選・FILTER/UNIQUE/SORTとの組み合わせ・エラー対処・MOS試験での位置づけと学習ロードマップを体系的に解説します。
VSTACK・HSTACK関数とは
VSTACK(Vertical STACK)とHSTACK(Horizontal STACK)は、Microsoft 365 Excel の動的配列関数グループに属します。複数の配列(セル範囲または数式の結果)を1つの配列に結合し、結果をスピルとして出力します。
| 関数 | 結合方向 | 列数の扱い | 行数の扱い |
|---|---|---|---|
| VSTACK | 縦(行を追加) | 最大列数に合わせて自動拡張 | 全配列の行数の合計 |
| HSTACK | 横(列を追加) | 全配列の列数の合計 | 最大行数に合わせて自動拡張 |
いずれもMicrosoft 365サブスクリプション版でのみ使用できます。Excel 2019・Excel 2021(永続ライセンス版)には搭載されていないため、職場のExcelバージョンを事前に確認してください。
VSTACK関数:縦方向に複数範囲を結合する
構文
=VSTACK(配列1, [配列2], ...)
| 引数 | 説明 | 省略 |
|---|---|---|
| 配列1 | 結合する最初のセル範囲または配列 | 必須 |
| 配列2 以降 | 縦に連結する追加の範囲(最大253個まで指定可能) | 省略可 |
基本例:3か月分の売上リストを縦に結合する
シート「1月」「2月」「3月」にそれぞれ同じ列構成の売上データがあるとします。集計用シートのA2セルに次の数式を入力するだけで、3つのシートのデータが縦に連結されて表示されます。
=VSTACK('1月'!A2:D20, '2月'!A2:D20, '3月'!A2:D20)
1月・2月・3月のデータが行方向に積み上げられ、最大で60行(各20行×3か月)のリストが自動生成されます。元データを更新すると統合リストも即時反映されます。
列数が異なる場合の注意:結合する配列の列数が揃っていない場合、VSTACKは最大列数に合わせてサイズを統一し、データが存在しないセルには#N/Aを返します。列構成を統一することがミスゼロ運用の基本です。
HSTACK関数:横方向に複数範囲を結合する
構文
=HSTACK(配列1, [配列2], ...)
| 引数 | 説明 | 省略 |
|---|---|---|
| 配列1 | 結合する最初のセル範囲または配列 | 必須 |
| 配列2 以降 | 横に連結する追加の範囲(最大253個まで指定可能) | 省略可 |
基本例:氏名と点数を隣接した表に統合する
A列に氏名、C列に点数があり、B列に空白が挟まっているとします。2列を横に並べた整形済みの表を作りたい場合は次のように書きます。
=HSTACK(A2:A20, C2:C20)
結果は「氏名」「点数」の2列が隣接した配列として展開されます。元データのA列・C列を更新するだけで統合表も自動更新されます。
行数が異なる場合の注意:結合する配列の行数が揃っていない場合、HSTACKは最大行数に合わせてサイズを統一し、データが存在しないセルには#N/Aを返します。
実務シナリオ別の活用パターン4選
パターン1:月次リストを年次リストに統合する
12か月のシートに分散している取引記録を1か所に集約するのは、VSTACKの最も典型的な使い方です。
=VSTACK(
'1月'!A2:E100,
'2月'!A2:E100,
'3月'!A2:E100,
'4月'!A2:E100,
'5月'!A2:E100,
'6月'!A2:E100,
'7月'!A2:E100,
'8月'!A2:E100,
'9月'!A2:E100,
'10月'!A2:E100,
'11月'!A2:E100,
'12月'!A2:E100
)
このように記述しておくと、各月シートに新しい取引を追加するだけで年次リストへ自動反映されます。以前は月末ごとに貼り付け作業が必要でしたが、VSTACKを使うと月次更新の負担が大幅に減ります。
パターン2:部門別リストを1つの集約表にまとめる
営業・製造・管理の3部門がそれぞれシートを持ち、社員名簿を管理している場合、VSTACKで一本化できます。
=VSTACK(営業!A2:C50, 製造!A2:C50, 管理!A2:C50)
これにSORT関数を組み合わせると、部署をまたいだ五十音順の全社員名簿を動的に生成できます。
=SORT(VSTACK(営業!A2:C50, 製造!A2:C50, 管理!A2:C50), 1, 1)
パターン3:ドロップダウンの選択肢を複数リストから動的に生成する
「商品マスタ」と「サービスマスタ」に分かれているリストを1つのドロップダウンにまとめたい場合、VSTACKとUNIQUEを組み合わせることで重複を排除した選択肢リストを生成できます。
=UNIQUE(VSTACK(商品マスタ!A2:A100, サービスマスタ!A2:A50))
この数式の結果を入力規則の「元の値」としてINDIRECT経由で参照すれば、常に最新の統合選択肢を提供するドロップダウンを構築できます。
パターン4:HSTACKでマスタ属性列を動的に付加する
既存のデータ範囲に、別のテーブルから取得した属性列を動的に付加したい場合にHSTACKが活躍します。
=HSTACK(A2:C100, XLOOKUP(A2:A100, マスタ!A:A, マスタ!B:D))
A列の顧客IDを使ってマスタから3列分の属性(会社名・担当者・地域)を取得し、元データの右に自動で連結します。手作業でのVLOOKUP貼り付けと異なり、マスタを更新するたびに結合結果も自動更新されます。
FILTER・UNIQUE・SORTと組み合わせる
VSTACK・HSTACKは単体では全データを返しますが、スピル関数と組み合わせることで「結合してから絞り込む」「結合してから並べ替える」という高度な集計が1つの数式で完結します。
| 組み合わせパターン | 数式の例 | できること |
|---|---|---|
| VSTACK + FILTER | =FILTER(VSTACK(A!A:C, B!A:C), VSTACK(A!B:B, B!B:B)>100) | 複数シートを統合したうえで条件絞り込みを行う |
| VSTACK + UNIQUE | =UNIQUE(VSTACK(リスト1, リスト2)) | 複数リストを統合して重複を除いた一覧を作る |
| VSTACK + SORT | =SORT(VSTACK(リスト1, リスト2), 2, -1) | 統合後に特定列の降順で並べ替える |
| HSTACK + XLOOKUP | =HSTACK(データ, XLOOKUP(ID列, マスタID, マスタ属性)) | マスタ参照結果を横に連結する |
特にSORT(VSTACK(...))の組み合わせは、複数シートにまたがるデータを並べ替えて返す操作を数式1本で実現できる強力なパターンです。FILTER関数でさらに条件を絞り込めば、部署・期間・金額帯の3軸フィルタも1セルの数式で完結します。
エラーと注意点
#SPILL! エラー:スピル先に既存データがある
VSTACK・HSTACKの結果が展開されるスピル範囲に既存のデータや数式が入っている場合、#SPILL!エラーが発生します。数式を入力するセルの右・下に十分な空白領域を確保してから入力してください。スピル範囲の確認は、数式セルを選択したときに表示される青い点線枠で確認できます。
#N/A エラー:列数(行数)の不一致
VSTACKでは列数が異なる配列を結合すると、列が足りない部分に#N/Aが返ります。IFERRORでラップすることで空白に変換できますが、根本的には各シートの列構成を統一することを推奨します。
=IFERROR(VSTACK(シート1!A2:D50, シート2!A2:C50), "")
バージョン制限:Microsoft 365専用
VSTACK・HSTACKはMicrosoft 365(サブスクリプション版)専用です。Excel 2019・Excel 2021の永続ライセンス版では#NAME?エラーになります。ファイルを共有する相手のExcelバージョンを事前に確認してから導入してください。互換性を優先する場合は、Power Queryの「クエリの追加」で同等の処理を行う方法が代替手段として有効です。
データ量が多い場合のパフォーマンス
VSTACKで12か月×数千行のデータを1シートに統合する場合、再計算のたびに大量のセルを更新します。データ量が数万行を超えるようであれば、Power Queryのクエリ結合(追加)のほうが再計算コストを抑えられます。VSTACKは数千行規模の日常的な統合に適しています。
PR
VSTACK・HSTACKを含む最新のスピル関数を豊富な実例で体系的に学べる一冊。Copilot活用法も収録されており、Microsoft 365ユーザーが手元に置きたい関数レファレンスです。
PR
たった1秒で仕事が片づくExcel自動化の教科書【改訂第3版】
手作業を徹底的に減らすExcel活用術を網羅した定番書。VSTACKで統合したデータをさらに自動化するアイデアも豊富で、月次業務の時短を追求したい方におすすめです。
MOS Excel 365 エキスパート(MO-211)での位置づけ
VSTACK・HSTACKはMOS Excel 365 エキスパート(MO-211)の出題範囲に含まれます。MO-211の4領域のうち、「高度な機能を使用した数式およびマクロの作成」の範囲に相当します。分野別の出題数・配点は公表されていません。
MO-211の試験概要は次の通りです。
| 項目 | 内容 |
|---|---|
| 試験時間 | 50分 |
| 採点 | 1000点満点 |
| 合格点 | 非公開(550点~850点が目安) |
| 受験料 | 一般価格 12,980円・学割価格 9,680円(いずれも税込、2026年7月時点) |
| 出題形式 | マルチプロジェクト(5個~10個のプロジェクト、1プロジェクトに1~7個の小問) |
| 合格率 | 公表されていません |
MO-211の4つの出題領域は以下の通りです。
- ブックのオプションと設定の管理
- データの管理、書式設定
- 高度な機能を使用した数式およびマクロの作成(VSTACK・HSTACKが含まれる領域)
- 高度な機能を使用したグラフやテーブルの管理
試験ではVSTACK・HSTACKを単体で使うだけでなく、FILTER・UNIQUE・SORTといった他のスピル関数と組み合わせた操作が求められる場合があります。数式を手で入力する練習を重ねておくと本番でスムーズに対応できます。
学習ロードマップ
MO-211(エキスパート)はまずMO-210(一般レベル)に合格してから受験するのが一般的な流れです。エキスパートはアソシエイト合格後に追加で60~100時間の学習が目安です(公式非公表のため目安として参照してください)。
| フェーズ | 学習内容 | 目安時間 |
|---|---|---|
| ステップ1 | MO-210(一般レベル)の5領域を網羅する。SUMIF・条件付き書式・グラフ・テーブル操作が中心 | 初学者 40~60時間 |
| ステップ2 | MO-211固有の機能を学ぶ。動的配列(FILTER・UNIQUE・SORT・SEQUENCE・VSTACK・HSTACK)・ユーザー定義書式・What-If分析・マクロ | 追加 60~100時間 |
| ステップ3 | マルチプロジェクト形式の模擬試験を繰り返す。時間配分(50分)の感覚をつかむ | 10~20時間 |
VSTACK・HSTACKはステップ2で重点的に学ぶ関数です。FILTER・UNIQUEと組み合わせた「複数シート統合→絞り込み」のパターンを実際にExcelで手を動かして練習することが最短の習得ルートです。
まとめ
VSTACK・HSTACK関数のポイントを整理します。
- VSTACK:複数範囲を縦(行方向)に連結する。月次リスト統合・部門別名簿統合に最適
- HSTACK:複数範囲を横(列方向)に連結する。マスタ属性の動的付加・離れた列の統合に最適
- 結果はスピルで自動展開され、元データの更新に追従する
- FILTER・UNIQUE・SORTと組み合わせることで「統合→絞り込み→並べ替え」を1数式で実現できる
- Microsoft 365専用のため、共有相手のExcelバージョン確認が必須
- MOS Excel 365 エキスパート(MO-211)の「高度な機能を使用した数式およびマクロの作成」の範囲に含まれる
月次シートのコピー貼り付けや、手作業でのリスト結合を繰り返しているなら、VSTACK・HSTACKへの置き換えが業務効率化の第一歩になります。まず小さなデータで動作を確認し、徐々に実務データへ適用していきましょう。
