Excel(エクセル)で複数のセル範囲を横に並べて1つの表にしたいときは、HSTACK関数を使います。基本の書式は=HSTACK(配列1,[配列2],...)です。たとえば、A2:B5とD2:E5を横に結合するなら、結果を表示したいセルに=HSTACK(A2:B5,D2:E5)と入力します。
HSTACK関数は、Excel for Microsoft 365のWindows版・Mac版と、Excel 2024のWindows版・Mac版がMicrosoft公式の適用先です。Web版やExcel 2021以前については、今回確認した公式資料の適用先に含まれていないため、利用できるとは断定できません。
HSTACK関数で2つの範囲を横に結合する手順
HSTACK関数は、指定した配列を左から右へ順番に追加し、より大きな配列として返します。元の範囲を移動したり、値を貼り付け直したりせずに、数式の結果として横並びの表を作れます。
- 結合後の表の左上にしたい空白セルを選択します。
=HSTACK(と入力します。- 最初に左側へ置く範囲を選択し、半角カンマを入力します。
- 次に右側へ置く範囲を選択し、閉じかっこを入力します。
- Enterキーを押して数式を確定します。
A2:B5の右側にD2:E5を並べる例は、=HSTACK(A2:B5,D2:E5)です。引数は複数指定できるため、さらに別の範囲を続ける場合は、半角カンマで区切って追加します。結果の列数は、指定した各範囲の列数の合計になります。
数式を入力する前に、結果が広がる範囲を空けておくことが大切です。HSTACK関数の結果は動的配列として周囲のセルへ自動的に展開されます。この動作を「スピル」と呼びます。Excel関数を使った表操作の関連記事も、数式を組み立てる際の参考にしてください。
範囲の行数が異なるときの#N/Aを処理する
HSTACK関数が返す結果の行数は、引数に指定した配列のうち最も行数が多いものに合わせられます。そのため、結合する範囲の行数が異なると、短い範囲で値が足りない位置には#N/Aが表示されます。
たとえば、A2:B5が4行、D2:E3が2行なら、=HSTACK(A2:B5,D2:E3)の結果は4行になります。右側の範囲に値がない後半2行には#N/Aが返ります。これは行数が違う配列を横にそろえるための動作です。
#N/Aを別の表示に置き換えたい場合は、HSTACK関数全体をIFERROR関数で囲みます。空白表示にする例は=IFERROR(HSTACK(A2:B5,D2:E3),"")です。ただし、この式はHSTACK関数の結果に含まれるエラーをまとめて空白へ置き換えます。元データに別のエラーが含まれている場合も同様に置き換わるため、元の範囲にエラーがないか先に確認してください。
結合する範囲の行数をそろえられる場合は、同じ行数の範囲を指定する方法もあります。行数差による#N/Aを避けたいのか、空白として見せたいのかを決めて式を選びます。数式のエラーを確認するときは、Excel数式に関する関連記事も参照できます。
#SPILL!が出る場合に確認すること
数式が正しくても、結果を展開する先に既存のデータがあると#SPILL!エラーになります。HSTACK関数は1つのセルだけでなく、結合後の行数と列数に応じた範囲へ結果を表示するためです。
- 数式セルを選択し、結果が何行・何列に広がるか確認します。
- 展開先に文字、数値、別の数式などが入っていないか確認します。
- 必要なデータを残したまま、HSTACKの数式を十分な空きがある場所へ移します。
- 空き範囲を確保したら、数式の結果が展開されるか確認します。
スピル配列数式はExcelテーブル内には配置できません。対象データがテーブルになっている場合も、HSTACKの数式自体はテーブル外のワークシート上のセルに入力します。テーブル内で#SPILL!になったときは、数式をテーブル外へ置けるか確認してください。Excelの表と数式に関する関連記事もあわせて確認できます。
別ブックの範囲を結合するときの注意点
別のExcelブックにある範囲を参照してHSTACK関数を使う場合、動的配列のブック間参照には制限があります。Microsoft公式資料では、参照する側と参照される側の両方のブックが開いている場合のみサポートされています。
参照元のブックを閉じると、リンクを更新した際に#REF!エラーが返ることがあります。別ブック参照を使うときは、両方のブックを開いた状態で数式と結果を確認します。参照元を閉じたまま継続して使う必要がある場合は、この制限を前提に構成を見直してください。
HSTACK関数を使うときの確認ポイント
- 書式は
=HSTACK(配列1,[配列2],...)です。 - 結果の行数は最も行数が多い配列に、列数は各配列の列数の合計になります。
- 行数が足りない部分には
#N/Aが返り、必要に応じてIFERROR関数で置き換えられます。 - 結果の展開先にデータがあると
#SPILL!になります。 - スピル配列数式はExcelテーブル内ではなく、テーブル外に置きます。
- 別ブックを参照するときは、両方のブックを開いた状態で利用します。
最初は同じ行数の小さな範囲で数式を試し、意図した順序で横に並ぶことを確認すると、参照範囲や展開先を把握しやすくなります。ほかの表操作については、Excelの表作成に関する関連記事も参考にしてください。