日曜日, 1月 30, 2022

Excel関数VLOOKUP、XLOOKUP、INDEX+MATCHの比較

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