部署ごとの売上データに、別の表から「評価」や「前年比」の列を追加したいこと、ありませんか?
いちいちコピペで列を挿入していると、貼り付け位置がズレたり、行の順番が狂ったり。
手作業での横方向の結合って、意外とミスが出やすいですよね。
ExcelのHSTACK関数を使えば、複数の表を横方向にピタッと結合できます。
数式ひとつで列を追加できるので、手作業の心配がなくなりますよ。
この記事では、HSTACK関数の基本から実践的な使い方まで、わかりやすく解説します。
ExcelのHSTACK関数とは?複数の表を横方向に結合する関数
HSTACK関数は、複数の表(配列)を横方向に結合する関数です。
読み方は「エイチスタック」。
「H」はHorizontal(水平)、「STACK」は積み重ねるという意味です。
たとえば、社員名簿の右側に評価テーブルを結合するイメージです。
左の表の右隣に、別の表がスッとくっつく感じですね。
これまではコピー&ペーストで列を追加していた作業が、数式1つで完了します。
しかも元データが更新されると、結合結果も自動で更新されますよ。
対応バージョンは以下のとおりです。
| バージョン | 対応状況 |
|---|---|
| Microsoft 365 | 対応 |
| Excel 2024 | 対応 |
| Excel 2021以前 | 非対応 |
お使いのバージョンが対応しているか、あらかじめ確認しておきましょう。
HSTACK関数の基本的な書き方(構文・引数)
HSTACK関数の構文はとてもシンプルです。
=HSTACK(配列1, [配列2], ...)
結合したい表を、カンマ区切りで順番に指定するだけです。
引数は最大254個まで指定できます。
引数:配列(array)の指定方法
引数に指定できるものは以下の3パターンです。
- セル範囲:
A2:B10のような通常の範囲指定 - 別シートの範囲:
評価!A2:B10のようにシート名付きで指定 - 配列定数:
{1;2;3}のような直接入力の配列
実務では、セル範囲や別シートの範囲を使うことがほとんどです。
別シートに評価データや属性データがある場合は、シート名を付けて指定しましょう。
戻り値:スピル(動的配列)で結果が展開される
HSTACK関数の結果はスピルで展開されます。
スピルとは、1つのセルに数式を入力するだけで、結果が隣接セルに自動展開される仕組みです。
数式を入力するのは先頭の1セルだけでOK。
残りのセルには自動で値が表示されます。
スピル範囲のセルを選択すると、青い枠線が表示されます。
この枠線がスピルの目印ですよ。
HSTACK関数の使い方を実例で解説
ここからは、社員データを使って具体的な使い方を見ていきましょう。
基本:2つの表を横に結合する
社員名簿と評価テーブルを横に結合してみます。
サンプルデータ
社員名簿(A2:C5):
| 社員ID | 氏名 | 部署 |
|---|---|---|
| 001 | 佐藤 | 営業 |
| 002 | 田中 | 経理 |
| 003 | 鈴木 | 総務 |
評価テーブル(E2:F5):
| 評価 | 前年比 |
|---|---|
| A | 120% |
| B | 95% |
| A | 110% |
数式
=HSTACK(A2:C5, E2:F5)
これだけで、2つの表が横にきれいに結合されます。
ヘッダー行を除いたデータ部分だけを指定するのがポイントです。
3つ以上の表をまとめて結合する
結合する表が3つ以上ある場合も、引数を追加するだけです。
=HSTACK(A2:C5, E2:F5, H2:H5)
社員名簿・評価テーブル・備考列の3つを一気に結合できます。
引数はカンマで区切って、どんどん追加してください。
データソースが増えても数式に追加するだけなので、管理がラクですよ。
行数が異なる表を結合するとどうなる?(#N/Aエラー対策)
結合する表の行数が異なる場合、少し注意が必要です。
HSTACK関数は、不足する行を#N/Aエラーで自動的に埋めます。
たとえば、4行の表と6行の表を結合すると、4行の表側の5〜6行目に#N/Aが入ります。
この#N/Aを消したい場合は、IFERROR関数で囲みましょう。
=IFERROR(HSTACK(A2:C5, E2:F7), "")
これで、#N/Aの部分が空白に置き換わります。
行数が異なる表を扱うときは、セットで覚えておいてくださいね。
HSTACK関数とVSTACK関数の違い
HSTACK関数とよく比較されるのがVSTACK関数です。
どちらも表を結合する関数ですが、方向が違います。
| 項目 | HSTACK | VSTACK |
|---|---|---|
| 結合方向 | 横(右に並べる) | 縦(下に積み重ねる) |
| 語源 | Horizontal Stack | Vertical Stack |
| 主な用途 | 項目(列)を横に追加する | 月別・支店別の表を1つにまとめる |
| 行数・列数の不一致時 | 不足行を#N/Aで埋める | 不足列を#N/Aで埋める |
使い分けはシンプルです。
- 列(項目)を増やしたい → HSTACK
- 行(データ件数)を増やしたい → VSTACK
たとえば「社員名簿に評価列を追加したい」ならHSTACKです。
「月ごとの売上データをまとめたい」ならVSTACKを使いましょう。
HSTACK関数×他の関数の組み合わせテクニック
HSTACK関数は、他の関数と組み合わせると真価を発揮します。
ここでは実務で特に便利な2パターンを紹介します。
FILTER関数と組み合わせて結合後に絞り込む
複数の表を結合した後、条件に合うデータだけ抽出したいことがありますよね。
そんなときはFILTER関数と組み合わせましょう。
たとえば、社員名簿と評価を結合した後、評価が「A」の社員だけ抽出する場合です。
=FILTER(HSTACK(A2:C5, E2:F5), E2:E5="A")
ちょっとむずかしく見えますが、やっていることはシンプルです。
HSTACKで結合した表に対して、FILTERで条件を指定しているだけですよ。
FILTER関数の条件には、元のセル範囲を指定するのがコツです。
結合後の配列ではなく、元の評価列(E2:E5)で絞り込みましょう。
SORT関数と組み合わせて結合後に並べ替える
結合したデータを特定の列で並べ替えたい場合は、SORT関数が便利です。
前年比(5列目)の降順で並べ替えるには、次のように書きます。
=SORT(HSTACK(A2:C5, E2:F5), 5, -1)
第2引数の 5 は並べ替えの基準列(前年比列)です。
第3引数の -1 は降順を意味します。
結合と並べ替えが1つの数式で完結するので、作業効率がグッと上がります。
ぜひ試してみてください。
HSTACK関数でよくあるエラーと対処法
HSTACK関数を使っていると、エラーに遭遇することがあります。
代表的な2つのエラーと対処法を押さえておきましょう。
#SPILL!エラー:結果の出力先がふさがっている
#SPILL!エラーは、スピルの展開先に問題がある場合に発生します。
主な原因は次の4つです。
- スピル先のセルにデータがある: 空のセルを確保する
- 結合セルがある: スピル範囲内の結合を解除する
- テーブル内で使用している: テーブル外のセルに数式を入力する
- シートの端を超える: 出力先の位置を左に移動する
最も多いのは、スピル先にデータが残っているケースです。
数式を入力するセルの右側に、十分な空きスペースを確保してください。
エラー値の詳しい解説はExcelエラー値一覧もあわせてどうぞ。
#NAME?エラー:対応バージョンの確認
#NAME?エラーが出る場合は、バージョンを確認しましょう。
HSTACK関数はMicrosoft 365またはExcel 2024でのみ使えます。
Excel 2021以前では関数名が認識されず、#NAME?エラーになります。
バージョンの確認方法は、ファイル → アカウントの画面です。
「Microsoft 365」または「Excel 2024」と表示されていれば対応していますよ。
まとめ
HSTACK関数は、複数の表を横方向に結合する関数です。
この記事のポイントをおさらいしましょう。
- 構文:
=HSTACK(配列1, [配列2], ...)で簡単に結合できる - スピル: 数式は1セルに入力するだけで結果が自動展開される
- 行数不一致: #N/Aで埋まるので、IFERRORで空白に置換する
- VSTACK関数との違い: HSTACKは横、VSTACKは縦に結合する
- 組み合わせ: FILTER関数やSORT関数と使えば、結合+加工が1つの数式で完結する
- 対応バージョン: Microsoft 365またはExcel 2024が必要
社員データに評価列を追加したり、別シートの情報を横に並べたい場面で、ぜひHSTACK関数を活用してみてください。
一度数式を組んでしまえば、データ更新のたびにコピペする手間がなくなりますよ。
