🚀The world's best VBA AI has evolved. ExcelMaster is now an autonomous Agent.Read more →
Back to Blog

ExcelのVSTACK・HSTACK関数 — 複数の範囲を「生きた」配列に積み重ねる

|

ExcelのVSTACK・HSTACK関数 — 複数の範囲を「生きた」配列に積み重ねる

要点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(垂直)vs HSTACK(水平)——どちらの軸に伸びるか
  • 複数シートの表をコピペなしで1つの生きたマスター表に
  • 幅/高さが不揃いだと #N/A で埋まる理由と、その回避法
  • DROP で繰り返しの見出しを外し、積み重ねをきれいに保つ
  • 結合結果を FILTERSORTUNIQUE で照会する

考え方の軸:表の下に貼り付け、ただし生きている

表を別の表の下に貼るのは一度きりの操作——来月またやれば先月の貼り付けは古くなります。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つ積むと見出しがデータの真ん中に埋もれます。きれいなパターンは VSTACKDROP と組み合わせ、各表の見出しを外して1つだけ 戻します。

' 各月次表に見出し行がある;最初だけ残し、残りは外す:
=VSTACK(Jan表, DROP(Feb表, 1), DROP(Mar表, 1))

DROP(範囲, 1) は先頭行を外します。これが複数シートの統合を実用にするイディオムです——見出し 1つ、全データ、完全に生きています。

判断:VSTACK か Power Query か

同じブック内の同じ形の範囲をいくつかコピペしていて、結果を生きたままにしたいなら、VSTACK は何よりも軽い——更新するクエリもなく、ただ再計算するだけ。正直な限界はどの動的配列関数とも 同じ:何十ものファイル、数十万行、厄介な列の対応付けには Power Query が正しい道具です。「この 数枚の表を積んで最新に保つ」なら VSTACK の勝ち。SORTFILTERTAKE と組み合わせ、 結合結果を1つの数式で照会できます。

ExcelMaster の使いどころ

本当の依頼は「これを積んで」だけではめったになく——各地域のタブを並べ替えた1つの表に統合し、 繰り返しの見出しを外し、生きたまま保ってです。ExcelMasterVSTACK(または 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で使える?

使えません。VSTACKHSTACK は Excel 365 / 2021 以降が必要です。旧版ではコピペか Power Query を使います。

検証環境

検証環境: Excel 365(Windows 11)— 最終確認 2026-06-17。

関連ガイド: ExcelのSEQUENCE関数 · ExcelのTAKE・DROP関数 · ExcelのSORT関数 · ExcelのFILTER関数