Excel関数VLOOKUP、XLOOKUP、INDEX+MATCHの比較を整理してみました。
まずサンプルとして上の様なデータを用意しました。右の表からD列、E列にデータを埋めるという流れです。
最もポピュラーなのはVLOOKUP関数。
VLOOKUP(検索値, 範囲, 範囲の列番号, 検索の種類)
検索の種類
1または省略・・・【検査値】以下の最大値を検索。
0・・・【検査値】に一致する値のみを検索
よって・・・
D3セル=VLOOKUP(C3,I$3:K$13,2,0)
E3セル=VLOOKUP(C3,I$3:K$13,3,0)
ところがVLOOKUPでは参照範囲の表の列データの記述順が逆だと処理できません。そんな場合はXLOOKUP(Microsoft365以降)を使います。なお、XLOOKUP関数は「VLOOKUP関数」としても「HLOOKUP関数」としても使用できます。
XLOOKUP(検索値, 検索範囲, 結果範囲)
D3セル=XLOOKUP(C3,I$3:I$13,J$3:J$13)
E3セル=XLOOKUP(C3,I$3:I$13,K$3:K$13)
もし参照する表のI列とK列が以下のように逆であればVLOOKUP関数は使えませんが、XLOOKUP関数なら・・・
以下のように記述することが出来ます。
XLOOKUP(検索値, 検索範囲, 結果範囲)
D3セル=XLOOKUP(C3,K$3:K$13,J$3:J$13)
E3セル=XLOOKUP(C3,K$3:K$13,I$3:I$13)
ちなみに、参照データが大量の場合にはINDEXと MATCHの組み合わせによりVLOOKUP、XLOOKUPよりも高速に処理できる利点があります。
INDEX(対象範囲, MATCH(検索値, 検索範囲, 検索の種類))
検索の種類
1または省略・・・【検査値】以下の最大値を検索。
0・・・【検査値】に一致する値のみを検索
-1・・・【検査値】以上の最小値を検索
D3セル
=INDEX(J$3:J$13,MATCH(C3,I$3:I$13,0))
E3セル
=INDEX(K$3:K$13,MATCH(C3,I$3:I$13,0))
ただし、INDEXにMATCHをネストするので構造が複雑になります。一般的な処理であればXLOOKUP関数が構造も簡単で使いやすいと思います。
Excel 16.56