エクセルで、複数の表や範囲を縦につなげて1つの表にするには VSTACK関数、横につなげるには HSTACK関数を使います。4月と5月の売上表なら、=VSTACK(A4:B5,A9:B11) で5人分の1つの表になります。
月ごと・シートごとに分かれた表をまとめるときに便利で、元の表を書き換えると結果も自動で変わります。この記事では、VSTACK関数・HSTACK関数の基本、見出しの付け方、計算した列を横に加える方法、つないだ表の合計、列の数が違うときの #N/A までを、1つの表で説明します。下の練習ツールで、売上を書き換えて結果の変わり方を試せます。
VSTACK関数・HSTACK関数の書き方
VSTACK関数は指定した順に下へ、HSTACK関数は右へつなげます。Microsoft 365・Excel 2024 で使えます。
2つの表を縦につなぐ(VSTACK)
手順:D3 に VSTACK の式を入れて Enter
4月(A4:B5)と5月(A9:B11)の表を、縦につないで 5 人分の 1 つの表にします。 D3 に次の式を入力して、Enter キーを押します❶。
=VSTACK(A4:B5,A9:B11) A4:B5A9:B11青と紫に「つなぎたい表」を上から順に入れます。3 つ以上でも , で続けられます。列の数はそろえます。例:3 か月分の表を縦につなぐ
=VSTACK(A3:C20,E3:G20,I3:K20) - Microsoft 365・Excel 2024 で使えます(Excel 2021 以前では使えません)。結果が広がる先のセルに何か入っていると #SPILL! になります。
- 列の数が違う表をつなぐと、足りない所が #N/A になります。

確認:4月の 2 行の下に、5月の 3 行がつながった

答えは 5 人分の 1 つの表 になりました❷。式は、次の順に計算しています。
- 4月の表(A4:B5)を上に置く
⇒ D3:E4 - その下に5月の表(A9:B11)をつなぐ
⇒ D3:E7 の 5 行
=VSTACK(A3:B3,A4:B5,A9:B11) のように、先頭に見出しの行を入れます。まず動かしてみよう|この記事のサンプルをその場で試せます
練習用ファイルをダウンロードしなくても、記事と同じデータ・同じセル番地のサンプルをここで動かせます。黄色いセルを書き換えると、結果がその場で変わります。各解説の最後にある「▶ この式を試す」を押すと、このツールの該当セルへ移動します。
VSTACK関数・HSTACK関数の使い方|やりたいこと別の式
| やりたいこと | 式(例) | 結果 |
|---|---|---|
| 2つの表を縦につなぐ | =VSTACK(A4:B5,A9:B11) | 5行2列の表 |
| 見出しも付ける | =VSTACK(A3:B3,A4:B5,A9:B11) | 見出し+5行 |
| 計算した列を横に加える | =HSTACK(A9:A11,B9:B11,B9:B11*0.1) | 名前・売上・1割の3列 |
| つないだ売上の合計 | =SUM(VSTACK(B4:B5,B9:B11)) | 510 |
| 列の数が違う | =VSTACK(A4:B5,A9:A11) | 足りない所が #N/A |

見出しも付ける
最初に見出しの行(A3:B3)を入れると、「名前・売上」の見出し付きの表になります。見出しは1回だけ入れ、2つ目の表は見出しを除いた範囲を指定します。
計算した列を横に加える(HSTACK)
HSTACK関数は範囲を横に並べます。名前・売上に、売上の1割を計算した列を加えると、鈴木 150・15、高橋 95・9.5、田中 60・6 の3列の表になります。
つないだ表をまとめて計算する
2か月分の売上をつないで SUM関数で合計すると 510 です。離れた範囲を1つにまとめてから計算できます。
列の数が違うときは #N/A になる
2列の表に1列の範囲をつなぐと、足りない2列目に #N/A が入ります。=IFERROR(VSTACK(A4:B5,A9:A11),"") のように IFERROR関数で空にできます(IFERROR関数の使い方)。
VSTACK関数・HSTACK関数がうまくいかないときの確認表
| 症状 | 考えられる原因 | 対処 |
|---|---|---|
| 「#N/A」が表示される | つないだ範囲の列(行)の数が違う | 範囲の大きさをそろえるか、IFERROR関数で空にする。 |
| 「#SPILL!」になる | 結果が広がる先のセルに値が入っている | 右下のセルを空ける。 |
| 空のセルが 0 になる | 元の範囲に空のセルがある | 範囲を見直すか、FILTER関数で空を除く。 |
| 「#NAME?」になる | 使えるバージョンではない | コピーして貼り付けでまとめる。 |
VSTACK関数・HSTACK関数のよくある質問
別のシートの表もつなげる?
つなげます。=VSTACK(Sheet1!A2:B10,Sheet2!A2:B10) のように、シート名を付けて範囲を指定します。
つないだ表から重複を除くには?
UNIQUE関数と組み合わせます(UNIQUE関数の使い方)。
あわせて読みたい:配列の関連記事
練習用ファイル:練習用Excelファイル(.xlsx・無料)
