ExcelのHSTACK関数の使い方|複数の表を横に結合する方法

スポンサーリンク

部署ごとの売上データに、別の表から「評価」や「前年比」の列を追加したいこと、ありませんか?
いちいちコピペで列を挿入していると、貼り付け位置がズレたり、行の順番が狂ったり。

手作業での横方向の結合って、意外とミスが出やすいですよね。

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):

評価前年比
A120%
B95%
A110%

数式

=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関数です。
どちらも表を結合する関数ですが、方向が違います。

項目HSTACKVSTACK
結合方向横(右に並べる)縦(下に積み重ねる)
語源Horizontal StackVertical 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関数を活用してみてください。
一度数式を組んでしまえば、データ更新のたびにコピペする手間がなくなりますよ。

タイトルとURLをコピーしました