shikumika’s diary

日々の事務作業で手間なことを簡単にできる仕組み(自動化、方法など)、困ったことの解決方法を調べた備忘録

【Excel】VLOOKUP関数とXLOOKUP関数で複数列を検索範囲にする方法

ExcelのVLOOKUP関数とXLOOKUP関数で複数列を検索範囲にして値を抽出する方法の事例です。1列の検索範囲で複数列の値を抽出したい場合は【Excel】VLOOKUPとXLOOKUPで複数列の値を抽出する方法の比較をご覧ください。

内容:

HSTACK関数は、Excel for Microsoft 365 Excel for Microsoft 365 for Mac Excel for the web で利用可能です。

詳細:HSTACK 関数 - Microsoft サポート

複数列を検索範囲にした数式例

下図は検索対象の表($B$3:$D$8)でB列とC列を検索し、一致する行のD列を取得するVLOOKUP関数とXLOOKUP関数の事例です。

VSTACK関数やHSTACK関数を活用すると、このようなデータ取得が比較的シンプルな数式で可能です。

VSTACK関数やHSTACK関数を組み合わせている

VLOOKUPとXLOOKUPで複数列を検索範囲にした事例

上記事例で、VLOOKUP関数の数式がセルG5、G6に入力されています。この数式はセルF5、F6を検索値とする違いがあるだけで、同じ数式です。

セルG5:

=VLOOKUP(F5,VSTACK(HSTACK($B$3:$B$8,$D$3:$D$8),$C$3:$D$8),2,FALSE)

セルG6: =VLOOKUP(F6,VSTACK(HSTACK($B$3:$B$8,$D$3:$D$8),$C$3:$D$8),2,FALSE)

XLOOKUP関数の数式はセルG10、G11に入力されています。

前述のVLOOKUP関数の数式と違い、XLOOKUP関数の場合は「検索範囲」と「戻り範囲」を指定する数式なので、次のようになります。

セルG10:

=XLOOKUP(F10,VSTACK($B$3:$B$8,$C$3:$C$8),VSTACK($D$3:$D$8,$D$3:$D$8),"",0,1)

セルG11:

=XLOOKUP(F11,VSTACK($B$3:$B$8,$C$3:$C$8),VSTACK($D$3:$D$8,$D$3:$D$8),"",0,1)

なお、「戻り範囲」は「検索範囲」の配列とあわせるために、セル範囲を2回繰り返し、VSTACK($D$3:$D$8,$D$3:$D$8)としています。

VSTACKとHSTACKの計算結果例

前述のVLOOKUPの数式の一部

VSTACK(HSTACK($B$3:$B$8,$D$3:$D$8)

について、数式の理解のために計算例を示すと次のとおりです。

複数列の検索範囲を1列の検索範囲の表に変換しており、この表を「範囲」としているため、VLOOKUPでの検索を可能にしています。

複数列の検索範囲を1列の検索範囲の表に変換しています

VSTACKとHSTACKの計算結果例

その他、VSTACKとHSTACKを活用した事例

VLOOKUPとXLOOKUPで離れた位置の複数列を抽出する場合もHSTACK関数が便利です。

shikumika.org

 

複数回答の選択肢が列ごとにあるアンケートデータの集計での活用例です。

shikumika.org

(参考)XLOOKUP関数の特徴と活用事例

ExcelのXLOOKUP関数は検索列と結果列の選択がしやすいなど、便利な関数です。以下に特徴と活用事例をまとめています。

shikumika.org

以上、ExcelでVLOOKUP関数とXLOOKUP関数で複数列を検索範囲にする方法でした。