ExcelのVLOOKUP関数とXLOOKUP関数で複数列を検索範囲にして値を抽出する方法の事例です。1列の検索範囲で複数列の値を抽出したい場合は【Excel】VLOOKUPとXLOOKUPで複数列の値を抽出する方法の比較をご覧ください。
内容:
HSTACK関数は、Excel for Microsoft 365 Excel for Microsoft 365 for Mac Excel for the web で利用可能です。
複数列を検索範囲にした数式例
下図は検索対象の表($B$3:$D$8)でB列とC列を検索し、一致する行のD列を取得するVLOOKUP関数とXLOOKUP関数の事例です。
VSTACK関数やHSTACK関数を活用すると、このようなデータ取得が比較的シンプルな数式で可能です。
上記事例で、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での検索を可能にしています。
その他、VSTACKとHSTACKを活用した事例
VLOOKUPとXLOOKUPで離れた位置の複数列を抽出する場合もHSTACK関数が便利です。
複数回答の選択肢が列ごとにあるアンケートデータの集計での活用例です。
(参考)XLOOKUP関数の特徴と活用事例
ExcelのXLOOKUP関数は検索列と結果列の選択がしやすいなど、便利な関数です。以下に特徴と活用事例をまとめています。
以上、ExcelでVLOOKUP関数とXLOOKUP関数で複数列を検索範囲にする方法でした。