この記事について
この記事は、生成AIを活用した自動生成フローで作成しています。Microsoft公式のHSTACK・VSTACK関数の仕様を確認し、行数・列数が違う表をつないだときの結果を試せるサンプルを用意しました。Excel実機での結果確認はまだ行っていません。
検証ステータス:📘 Microsoft Support確認済み・Excel実機未確認
2つの表をExcelで並べるとき、行数が違うなら横結合、列数が違うなら縦結合で何が起きるのでしょうか。Microsoft 365 / Excel 2024の動的配列関数 HSTACK と VSTACK は、数式で表を組み合わせられます。ただし、幅や高さが違う表を結合したときには#N/Aが埋まることがあり、単にIFERRORで隠すと原因を見失う場合があります。
、同じ2つのダミー表を使って違いを観察し、何を確認してから実務に使うか説明します。
サンプル表を作る
Excelの空のシートに次の2つの表を入力します。左表はA1:B4、右表はD1:F3です。まず数式のスピル範囲に他の値がないか確認してください。
左の表 A1:B4
| 氏名 | 部門 |
|---|---|
| 青木 | 営業 |
| 佐藤 | 総務 |
| 鈴木 | 営業 |
右の表 D1:F3
| コード | 数量 | 価格 |
|---|---|---|
| P01 | 2 | 100 |
| P02 | 3 | 150 |
ヘッダー行を除いたデータは左が3行×2列、右が2行×3列です。今回は意図的にサイズを変えています。計算式を入れるセルは、元表と重ならないH2などを選びます。
HSTACK:横に結合すると何が起きるか
=HSTACK(A2:B4,D2:F3)
HSTACKは各配列を横方向に並べます。戻り値の列数は各配列の列数の合計、行数は最大の行数です。今回なら 3行×5列 となります。
| 1列 | 2列 | 3列 | 4列 | 5列 |
|---|---|---|---|---|
| 青木 | 営業 | P01 | 2 | 100 |
| 佐藤 | 総務 | P02 | 3 | 150 |
| 鈴木 | 営業 | #N/A | #N/A | #N/A |
この#N/Aは、右表のデータ行が左表より1つ少ないために追加された領域です。ファイルを壊したわけではありません。Microsoft公式のHSTACK関数でも、不足行には#N/Aが入ると説明されています。
VSTACK:縦に結合すると何が違うか
=VSTACK(A2:B4,D2:F3)
VSTACKは縦方向へ並べる関数です。今回は 5行×3列 になります。左の表は2列しかないため、上側3行の3列目に#N/Aが現れる想定です。
| 1列 | 2列 | 3列 |
|---|---|---|
| 青木 | 営業 | #N/A |
| 佐藤 | 総務 | #N/A |
| 鈴木 | 営業 | #N/A |
| P01 | 2 | 100 |
| P02 | 3 | 150 |
縦に積み上げるだけで表の意味が一致するわけではありません。ここでは左の2列が「氏名・部門」、右の3列が「コード・数量・価格」なので、形としては結合できても列の意味が混ざっています。業務で使うなら、まず列の意味をそろえる必要があります。
この問題は、SQLで列名の違うデータを安易にUNIONするのと似た設計ミスにつながります。HSTACK/VSTACKは行と列の位置で結合し、ヘッダー名を理解して対応付けるわけではありません。
1か所だけ変えてみる
次に左表の最後の1行(A4:B4)を削除するのではなく、式の参照範囲だけ1行減らします。
=HSTACK(A2:B3,D2:F3)
両方の表が2行になるので、HSTACKの不足行がなくなり、計算される領域が2行×5列になるはずです。データ自体を編集せず、参照範囲だけ変えて挙動を確認できるのが利点です。
もう一度参照範囲を元に戻してから、IFNAで表示を変更します。
=IFNA(HSTACK(A2:B4,D2:F3),"")
不足位置の#N/Aが空文字に変わります。Microsoftの関数説明ではIFERRORを組み合わせる例もありますが、IFERRORは別の種類のエラーも隠します。IFNAなら#N/Aだけを対象にできます。
注意:元データ側に本当の#N/Aがある場合もIFNAで見えなくなります。必ず元表の品質を別途確認してから、見た目を整える目的で使いましょう。
#SPILL! が出たら
HSTACK/VSTACKは一つのセルへ式を入れ、計算結果を周囲にスピルさせる動的配列関数です。結果を広げたい位置に文字や別の式があると、#SPILL!エラーが出ることがあります。
元表の周辺に書き込むのではなく、空の範囲に式を置くことを基本とします。実務用の帳票では、結果を置く専用シートや領域を用意した方が安全です。
また、関数が存在しない古いExcelでは、計算そのものができません。Microsoft Supportの対応製品はExcel for Microsoft 365とExcel 2024系です。共有相手が古いExcelを使う場合、値貼り付けや別方式を検討してください。
仕事で使う場合の判断
| やりたいこと | 適した検討 |
|---|---|
| 別々の情報を横に並べたい | HSTACK。ただし行の対応関係を先に確認 |
| 同じ列定義の毎月データを下に積みたい | VSTACK。ただし列順と型を統一 |
| 列数が不一致 | #N/Aの発生位置と意味を確認 |
| 入力データに元々エラーがある | IFNAで隠さず、先にエラーの原因を追う |
| 行が増え続ける業務表 | ExcelテーブルやPower Queryでスキーマ管理する方法も比較 |
特に重要なのは、表を並べることと、データを正しく紐付けることは違うという点です。HSTACKは異なる表の行番号を合わせるだけなので、「社員IDで紐づける」用途にはXLOOKUPやPower Queryの結合など、キーに基づく方式を検討します。
完成版の式と入力表の作り方は、GitHubサンプル:HSTACK/VSTACKの行列サイズ違いにも保存しました。
