【エクセル】HSTACK関数でデータを統合する方法。XLOOKUP関数と組み合わせる応用テク

エクセルのHSTACK関数で横方向にデータを統合する方法

Excel(エクセル)で複数のデータを横方向に統合する時に便利なのが、新たに登場したHSTACK関数(エイチ・スタック)です。

HSTACK関数は、異なるセル範囲のデータを合体し、そのデータをさらに並べ替えしたり、特定のデータのみを抽出するなどして利用されます。

さらに、HSTACK関数はXLOOKUP関数と組み合わせて利用すると、異なる列から複数の検索値を一括で抽出する、ということもできます。

今回の記事では、HSTACK関数の基本的な使い方と、HSTACK関数を使った5つの事例を紹介します。

エクセルのHSTACK関数とは?

HSTACK関数の読み方は「エイチ・スタック関数」です。

HSTACK関数とは、「異なる範囲にある複数のデータを横方向に統合して1つにまとめる関数」です。

Hが水平を意味する英語「Horizonal」の頭文字で、「STACK」は大量、桁の大きい数を意味しています。

ちなみに、VSTACK関数という似た関数がありますが、VSTACK関数は縦方向に統合する関数です。

HSTACK関数では、以下のイメージのように、異なるセル範囲のデータを合体し、そのデータをさらに加工するときによく利用されます。

HSTACK関数で出来ること(イメージ)
HSTACK関数で出来ること(イメージ)

現時点(25年3月)で利用できるユーザーは、Microsoft365(サブスク)を使用しているユーザーと限定的です。

また、HSTACK関数を使うメリットは以下のようなものがあります。

HSTACK関数のメリット

・データの切り貼りで結合する必要がない

・関数を挿入するセルは1つだけで完結!

・データが膨大でも問題なし

・他の関数と組み合わせて、統合したデータを並べ替えしたり、抽出することができる

この関数を1つのセルに使うと、スピル機能が自動で働いて、隣接する複数のセルに結果が表示されるという便利な関数です。

HSTACK関数とVSTACK関数の違い

以下の記事で、VSTACK関数という関数の使い方を紹介しました。

VSTACK関数は、HSTACK関数と機能はほぼ同じですが、データを統合する方向が異なります

HSTACK関数は横方向にデータを結合するのに対して、VSTACK関数は縦方向にデータを結合します。(下の図を参考)

VSTACK関数は縦方向にデータを結合
VSTACK関数は縦方向にデータを結合

HSTACK関数の書式と引数

HSTACK関数の書式(構文)と引数は、以下のとおりです。

=HSTACK(配列1,配列2‥‥)

配列(=array)は、統合したいセル範囲をそれぞれ指定します。

統合する配列の行数は必ず同じである必要があります。また、見出しの並び順も一致させておきましょう。

HSTACK関数の元データのルール
HSTACK関数の元データのルール

HSTACK関数の基本的な使い方

HSTACK関数の基本的な使い方を解説します。

2つのデータを用意して、手順1~3に沿って、HSTACK関数を使用してみてください。

手順1.HSTACK関数の挿入・第1引数を指定

まずは、空いているセルに、HSTACK関数を挿入します。

挿入したら、第1引数「配列1」を指定するため、1つ目のデータを見出しも含んでドラッグで選択します。

選択したら、次のデータを選択するため、「,」(カンマ)を入力してください。

=HSTACK(B2:E6,

手順1.HSTACK関数を挿入してデータを選択
手順1.HSTACK関数を挿入してデータを選択

手順2:HSTACK関数の第2引数を指定

次に、第2引数「配列2」を指定するため、2つ目のデータをドラッグして選択します。

今度は見出し列は含めずにセル範囲を選択してください。見出しを含めると、統合したデータに2つの見出し列が挿入されてしまいます。

=HSTACK(B2:E6,H2:I6)

手順2.HSTACK関数で2つ目の表を選択
手順2.HSTACK関数で2つ目の表を選択

手順3:HSTACK関数を確定

「Enter」キーを押して、HSTACK関数を確定します。

そうすると、引数「配列1」「配列2」で指定したデータが統合されます。

手順3.HSTACK関数を確定(統合の完了)
手順3.HSTACK関数を確定(統合の完了)

HSTACK関数を挿入したセルはB9セルですが、スピルが働いて、隣接する「B9:G13」のセル範囲にも統合した結果が表示されます。

スピル機能について詳しく知りたい方は、以下の記事を参考にしてください。

HSTACK関数でエラー「#N/A」が発生する原因

HSTACK関数でエラー「#N/A」が発生する場合があります。

そのときは、統合しようとしているデータの行数が異なることが原因です。

例えば、下の図でB9セルに「=HSTACK(B2:E6,H2:I7)」を挿入していますが、エラーが発生しています。

原因は、1つ目のデータは5行で構成されていますが、2つ目のデータは6行のため、複数のセルに「#N/A」が表示されます。

HSTACK関数でエラーが発生する原因
HSTACK関数でエラーが発生する原因

HSTACK関数を使う時は、データの行数と見出しの並びが一致していることを確認するよう注意してください。

【基本編】HSTACK関数の事例を紹介

HSTACK関数の基本的な使い方を3つの事例で紹介します。

元データのセル範囲の行数が増減する場合の対処方法など、役立つ情報を載せていますので実務に活用してください。

HSTACK関数/事例1:複数シートのデータを統合

複数のワークシートの表を1つにまとめる方法を紹介します。

今回は、列数の異なる「表1」「表2」シートのデータを1つにまとめます。

HSTACK関数で複数のシートを統合する方法
HSTACK関数で複数のシートを統合する方法

まずは、HSTACK関数を挿入して(図1)、「表1」シートをクリックし(図2)、対象のデータをドラッグで選択します。(図3)

=HSTACK(表1!B2:E6,

HSTACK関数で複数シートのデータを選択(手順1)
HSTACK関数で複数シートのデータを選択(手順1)

次に、「,」(カンマ)を入力してから、「表2」シートをクリックし(図4)、見出しを除く対象データをドラッグで選択します。(図5)

=HSTACK(表1!B2:E6,表2!C2:D6)

HSTACK関数で複数シートのデータを選択(手順2)
HSTACK関数で複数シートのデータを選択(手順2)

HSTACK関数を確定すると、以下のように2つのシートのデータを統合することができます。

HSTACK関数で複数シートの統合が完了(手順3)
HSTACK関数で複数シートの統合が完了(手順3)


統合されたデータは、選択したワークシートの順番で左から表示されます。

フィルター機能のように並び順を変更したい場合は、下の見出しで紹介しているSORT関数と組み合わせた方法を利用してください。

HSTACK関数/事例2:シートの串刺し演算

複数のワークシートの表を1つにまとめる方法は、もう1つあります。

串刺し演算」と呼ばれる方法をHSTACK関数で利用して、データを統合します。

手順1.HSTACK関数を挿入

見出し行を作成して、その右上のセルにHSTACK関数を挿入します。

手順1.HSTACK関数を串刺しで利用する方法
手順1.HSTACK関数を串刺しで利用する方法

手順2.ワークシートを選択

統合したいシートのうち、一番左のシートをクリックし(図3)、「Shift」キーを押しながら一番右のシートをクリックします。(図4) 

シートの選択が終わったら、見出しを除くデータをドラッグで選択してください。(図5)

HSTACK関数で串刺し演算を使用する方法
HSTACK関数で串刺し演算を使用する方法

手順3.HSTACK関数を確定

HSTACK関数を確定すると、数式は以下のようになり、「表1」「表2」「表3」シートを串刺しして統合することができます。

=HSTACK(表1:表3!C2:D6)

HSTACK関数で串刺し演算して統合した結果
HSTACK関数で串刺し演算して統合した結果

ただし、表の元データの列数がそれぞれ異なっていると、空白の列に対しては0」が表示されます。

この列数が異なることで発生する「0」を非表示に方法を次の見出しで紹介します。

HSTACK関数/事例3:FILTER関数で空白列の「0」を表示しない

HSTACK関数で統合する元データのセル範囲が変動する場合は、選択するセル範囲を大きめに選択しておくことをおすすめします。

ただ、選択したセル範囲に空白が存在すると、下の図のように、HSTACK関数の結果は「0」で返されてしまいす。

HSTACK関数で空白列があると0が表示
HSTACK関数で空白列があると0が表示

この空白列が原因で発生する「0」の列を表示しない方法を紹介します。

利用するのは、データを抽出することができるFILTER関数と、上の見出しで紹介した串刺し演算です。

FILTER関数の書式は以下のとおりです。

=FILTER( 配列,含む,[空の場合])

第1引数『配列』:データを絞りたいセル範囲を指定
第2引数『含む』抽出する条件を指定
第3引数『空の場合』:省略可能

手順1.FILTER関数の後にHSTACK関数を挿入

FILTER関数を挿入し、FILTER関数の第1引数「配列(セル範囲)」にHSTACK関数を入力します。

=FILTER(HSTACK(表1:表3!C2:E6),

FILTER関数の中にHSTACK関数を挿入
FILTER関数の中にHSTACK関数を挿入

手順2 .FILTER関数の第2引数を指定

FILTER関数の第2引数「含む(=抽出条件)」を指定します。

見出し行の2行目の値が「0」のセルを除きたいので、「0以外のセル」を抽出条件にするため「HSTACK(表1:表3!C2:E2)<>0」と指定します。

=FILTER(HSTACK(表1:表3!C2:E6),HSTACK(表1:表3!C2:E2)<>0)

FILTER関数の第2引数にHSTACK関数を挿入
FILTER関数の第2引数にHSTACK関数を挿入

手順3.FILTER関数を確定

FILTER関数を確定すると、空白の列は表示されず、HSTACK関数の結果を取得することができます。

FILTER関数とVSTACK関数で空白行を非表示
FILTER関数とVSTACK関数で空白行を非表示

このように、表の大きさは変化することが多いので、HSTACK関数はFILTER関数とセットで利用することをお勧めします。

今回紹介したFILTER関数の使い方を詳しく知りたい方は、以下の記事を参考にしてください。

【応用編】HSTACK関数の事例を紹介

次に、HSTACK関数の応用テクニックを事例で紹介します。

HSTACK関数/事例4:XLOOKUP関数と組み合わせて検索する

XLOOKUP関数とは、VLOOKUP関数が進化した検索用の新関数です。

表の中から異なる列の値を一括で抽出する時は、XLOOKUP関数にHSTACK関数を組み合わせると便利です。

XLOOKUP関数とHSTACK関数を組み合わせるには?
XLOOKUP関数とHSTACK関数を組み合わせるには?

XLOOKUP関数の書式は下記の通りです。(省略可能な引数は除く)

=XLOOKUP(検索値,検索範囲,戻り範囲)

第1引数『検索値』:検索する文字列を指定
第2引数『検索範囲』:どのセル範囲から探したいかを指定
第3引数『戻り範囲』:どのセル範囲を返したいかを指定

今回は上の表から、「小関さん」の「算数」「社会」「国語」の点数を検索する手順を解説します。

手順1.XLOOKUP関数を挿入

C12セルにXLOOKUP関数を挿入して、第1引数「検索値」と第2引数「検索範囲」を指定します。

=XLOOKUP(B12,B3:B8,

XLOOKUP関数の検索値と検索範囲を指定
XLOOKUP関数の検索値と検索範囲を指定

手順2.XLOOKUP関数の第3引数を指定

XLOOKUP関数の第3引数「戻り範囲」にHSTACK関数を挿入します。

=XLOOKUP(B12,B3:B8,HSTACK(

XLOOKUP関数の戻り範囲にHSTACK関数を挿入
XLOOKUP関数の戻り範囲にHSTACK関数を挿入

手順3.HSTACK関数の引数を指定

HSTACK関数の引数を指定します。検索値を抽出したい列を「Ctrl」キーを押しながら、ドラッグして選択します。「算数」「社会」「国語」の点数を抽出したいので、この3列を指定します。

=XLOOKUP(B12,B3:B8,HSTACK(C3:C8,E3:E8,G3:G8))

HSTACK関数の引数に検索したい列を指定
HSTACK関数の引数に検索したい列を指定

手順4.数式を確定

XLOOKUP関数を確定すると、「小関さん」の「算数」「社会」「国語」の点数を一括で抽出することができます。

XLOOKUP関数とHSTACK関数を使って一括で検索
XLOOKUP関数とHSTACK関数を使って一括で検索

XLOOKUP関数の使い方を詳しく知りたい方は、以下の記事を参考にしてください。

HSTACK関数/事例5:SORT関数と組み合わせて並べ替えする

SORT関数を利用すれば、HSTACK関数で統合したデータを昇順や降順に並べ替えすることができます。

SORT関数の書式は下記の通りです。

=SORT(配列,[並べ替えインデックス],[並べ替え順序],[並べ替え基準])

第1引数『配列』:並べ替えするセル範囲を指定検索する文字列を指定
第2引数『並べ替えインデックス』:何列目を並べ替えするか指定
第3引数『並べ替え順序』昇順は「1」、降順は 「-1」を指定
第4引数『並べ替え基準』:縦方向に並べ替えするときは省略可能

手順1.HSTACK関数でデータを統合

まずは、HSTACK関数を入力して、2つの表のデータを統合します。

=HSTACK(B3:E6,H3:I6)

SORT関数とHSTACKを組み合わせる手順
SORT関数とHSTACKを組み合わせる手順1

手順2.SORT関数を利用

手順1で作成したHSTACK関数を囲うように、SORT関数を挿入します。(下の数式の緑下線部)

「国語」(3列目)を昇順(1)で並べ替えするために、第2引数「並べ替えインデックス」は「3」を指定、第3引数『並べ替え順序』は「1」を指定します。

=SORT(HSTACK(B3:E6,H3:I6),3,1)

SORT関数とHSTACK関数で昇順で並べ替え
SORT関数とHSTACK関数で昇順で並べ替え

SORT関数を確定すると、HSTACK関数で統合されたデータの「国語」列が昇順に並べ替えされます。

SORT関数の使い方を詳しく知りたい方は、以下の記事を参考にしてください。

HSTACK関数が使えない場合

HSTACK関数はMicrosoft365(サブスク)を利用しているユーザーしか利用できません。

そのため、HSTACK関数が使えない場合は、「統合」機能を利用して、データを合体します。

まず、結合する先のセルを選択し、「データ」タブの「統合」ボタンをクリックします。

「データ」タブの「統合」機能
「データタブの「統合」機能

「統合の設定」画面が表示されます。「統合元範囲」で統合したい表1のセル範囲を指定して、「追加」ボタンを押します。

統合元範囲を選択
統合元範囲を選択

つづいて、「統合元範囲」で統合したい2つ目のデータ(表2)のセル範囲を指定して、「追加」ボタンを押します。

2つ目の統合元範囲を選択
2つ目の統合元範囲を選択

左下の「統合の基準」の「上端行」にチェックを入れて、「OK」を押します。

統合の基準を選択
統合の基準を選択

以上の操作により、データの結合が完了します。

統合機能によるデータの合体が完了
統合機能によるデータの合体が完了

統合機能の詳しい使い方は、以下の記事を参考にしてください。

-Excel(エクセル), 数式・関数
-