要点 —
VSTACKは範囲を縦に積み重ね(垂直)、HSTACKは横に並べます(水平)。 どちらも複数の範囲や配列を、スピルして元が変われば更新される1つの結果に統合します。 構文は=VSTACK(配列1, [配列2], …)。定番の使い方は、複数の月やシートの同じ形の表を、 コピペなしで1つの生きたマスター表にまとめること。積み重ねる範囲が幅(VSTACK)や高さ (HSTACK)を共有しないと、すき間は#N/Aで埋まります。Excel 365 / 2021 以降。
=VSTACK(Jan, Feb, Mar) ' 3つの月次表、1つの生きた積み重ね
=HSTACK(名前, 点数) ' 2列を横に並べる
長年、「1月・2月・3月を1つのリストに」はコピー、貼り付け、コピー、貼り付け——そして毎月やり
直しでした。VSTACK はそれを、元の表が変わった瞬間に積み直す1つの数式にします。データ結合への
動的配列の答えであり、HSTACK で横方向版もできます。
この記事でわかること
VSTACK(垂直)vsHSTACK(水平)——どちらの軸に伸びるか- 複数シートの表をコピペなしで1つの生きたマスター表に
- 幅/高さが不揃いだと
#N/Aで埋まる理由と、その回避法 DROPで繰り返しの見出しを外し、積み重ねをきれいに保つ- 結合結果を
FILTER・SORT・UNIQUEで照会する
考え方の軸:表の下に貼り付け、ただし生きている
表を別の表の下に貼るのは一度きりの操作——来月またやれば先月の貼り付けは古くなります。VSTACK
は積み重ねを記述し、永遠に再計算します。「これらの範囲を追加する」を数式にしたものと考えて
ください。結果は数式のセルからスピルし、元と共に伸びます。
' 手動:Feb をコピー、Jan の下に貼る、Mar をコピー、その下に…毎月
' 生きている:
=VSTACK(Jan表, Feb表, Mar表) ' どれかの表が変われば積み直す
HSTACK は同じ発想を90°回したもの:行を足す代わりに列を足し、範囲を左から右へ並べます。
すべての鍵となるルール:軸を合わせる、さもなくば #N/A
VSTACK は下へ積むので、各範囲は列数を同じにすべき;HSTACK は右へ積むので行数を同じ
にすべきです。合わないと Excel はすき間を空のままにできず、短い側を #N/A で埋めます。
=VSTACK(A2:C10, E2:F10) ' 3列の上に2列 -> #N/A の列が出る
=HSTACK(A2:A10, C2:C6) ' 9行の横に5行 -> 下に4つの #N/A
直し方:入力を同じ形にするか、結果を整える——=IFERROR(VSTACK(...), "") で埋めセルを空に。
ただし #N/A の列はたいてい、間違った範囲を積んだ合図です——まず幅を確認しましょう。
繰り返しの見出しを外す
実際の表には見出し行があり、3つ積むと見出しがデータの真ん中に埋もれます。きれいなパターンは
VSTACK を DROP と組み合わせ、各表の見出しを外して1つだけ
戻します。
' 各月次表に見出し行がある;最初だけ残し、残りは外す:
=VSTACK(Jan表, DROP(Feb表, 1), DROP(Mar表, 1))
DROP(範囲, 1) は先頭行を外します。これが複数シートの統合を実用にするイディオムです——見出し
1つ、全データ、完全に生きています。
判断:VSTACK か Power Query か
同じブック内の同じ形の範囲をいくつかコピペしていて、結果を生きたままにしたいなら、VSTACK
は何よりも軽い——更新するクエリもなく、ただ再計算するだけ。正直な限界はどの動的配列関数とも
同じ:何十ものファイル、数十万行、厄介な列の対応付けには Power Query が正しい道具です。「この
数枚の表を積んで最新に保つ」なら VSTACK の勝ち。SORT・
FILTER・TAKE と組み合わせ、
結合結果を1つの数式で照会できます。
ExcelMaster の使いどころ
本当の依頼は「これを積んで」だけではめったになく——各地域のタブを並べ替えた1つの表に統合し、
繰り返しの見出しを外し、生きたまま保ってです。ExcelMaster は VSTACK(または HSTACK)
を書き、見出しを外す DROP を足し、#N/A の列が出ないよう幅が合うか確認し、結合ビューを照会
したいなら SORT/FILTER で包みます——すべて日本語の指示から。
よくある質問
VSTACKとHSTACKの違いは?
VSTACK は範囲を縦に、1つを別の下に積みます(列数を揃えるべき)。HSTACK は横に、並べて積み
ます(行数を揃える)。どちらもスピルし、元が変われば更新されます。
Power Queryなしで複数シートのデータを結合するには?
=VSTACK(Sheet1!A2:C100, Sheet2!A2:C100, Sheet3!A2:C100) を使います。見出しの重複を避けるには
外します:=VSTACK(1枚目, DROP(2枚目,1), DROP(3枚目,1))。結果は生きていて、シートが変われば
積み直します。
VSTACKが#N/Aを返すのはなぜ?
積んだ範囲の幅(VSTACK)や高さ(HSTACK)が合わず、Excel が短い側を #N/A で埋めています。入力
を同じ形にするか、IFERROR で包んで埋めセルを空にします。
VSTACKの結果を並べ替え・フィルターできる?
はい——包みます:=SORT(VSTACK(Jan, Feb, Mar), 2, -1) は結合した積み重ねを並べ替え、
=FILTER(VSTACK(...), 条件) は照会します。全体が生きたままです。
VSTACKはExcel 2016や2019で使える?
使えません。VSTACK と HSTACK は Excel 365 / 2021 以降が必要です。旧版ではコピペか Power
Query を使います。
検証環境
検証環境: Excel 365(Windows 11)— 最終確認 2026-06-17。
関連ガイド: ExcelのSEQUENCE関数 · ExcelのTAKE・DROP関数 · ExcelのSORT関数 · ExcelのFILTER関数
