ExcelのXLOOKUP関数の使い方:VLOOKUPより簡単な新定番
ExcelやGoogleスプレッドシートで使えるXLOOKUP関数の基本から応用までを解説。左側の検索、複数列の一括取得、エラー処理、下からの検索など、VLOOKUPとの違いも含めて分かりやすく紹介します。
著者 Ayoub Farid · · 5 分で読めます
XLOOKUP関数は、従来のVLOOKUPやHLOOKUP、そして多くのINDEX/MATCHの組み合わせを1つに置き換える、非常にシンプルで直感的な関数です。お使いのExcelが対応している場合(Microsoft 365、Excel 2021以降、Web版Excel)、またはGoogleスプレッドシートをお使いなら、検索系のエクセル関数として真っ先に覚えるべき機能です。
構文
=XLOOKUP(lookup_value, lookup_array, return_array, [if_not_found], [match_mode], [search_mode])
普段の作業では、最初の3つの引数さえ指定すれば十分です。
- lookup_value(検索値): 探したい値
- lookup_array(検索範囲): 検索対象となるセル範囲(列など)
- return_array(戻り配列): 取得したいデータがあるセル範囲(列など)
具体例
| A | B | C | |
|---|---|---|---|
| 1 | コード | 商品名 | 価格 |
| 2 | P-101 | エスプレッソ | 2.50 |
| 3 | P-102 | ラテ | 3.50 |
| 4 | P-103 | 紅茶 | 2.00 |
=XLOOKUP(F2,A2:A4,C2:C4) → 「P-102」なら 3.50 を返します
VLOOKUPのように列番号を数える必要はありません。また、最初から完全一致が標準(デフォルト)に設定されています。
エラー時の表示も標準対応
=XLOOKUP(F2,A2:A4,C2:C4,"Not found")
IFERROR関数を外側に重ねる必要はありません。
左側の列も検索可能
取り出したい列が検索列より左側にあっても問題ありません。
=XLOOKUP("Latte",B2:B4,A2:A4) → P-102
これはVLOOKUP単体ではできなかった処理です。
複数列をまとめて取得
=XLOOKUP(F2,A2:A4,B2:C4)
商品名と価格の両方を取得し、隣り合う2つのセルへ自動的に展開(スピル)します。
近似一致(範囲検索)
税率の区分や成績評価の判定には、一致モード(match_mode)に -1(完全一致、または次に小さい項目)を指定します。
=XLOOKUP(B2,$E$2:$E$5,$F$2:$F$5,,-1)
VLOOKUPでTRUEを指定する場合とは異なり、参照表を事前に並べ替えておく必要はありません。
最後の一致データを検索
検索モード(search_mode)に -1 を設定すると、下から上に向かって検索できます。たとえば特定商品の最新価格を取得したい場合に便利です。
=XLOOKUP(F2,A2:A500,C2:C500,,0,-1)
オートフィル(下にコピー)する前に固定
ほかの検索関数と同じく、下方向にオートフィルする際は、セル範囲に $ を付けて絶対参照にしておきましょう。
=XLOOKUP(F2,$A$2:$A$500,$C$2:$C$500,"Not found")
互換性について
XLOOKUPはExcel 2019以前のバージョンには搭載されていません。古いバージョンを使っている相手にファイルを送ると、#NAME? エラーが表示されてしまいます。用途に応じた使い分けについては、XLOOKUPとVLOOKUPの比較をご覧ください。
実際に練習してみよう
検索関数はCellioでも近日中に学習ユニットとして追加予定です。当サイトの練習問題集では、解答付きのXLOOKUP演習課題をご用意しています。
よくある質問
ExcelのXLOOKUPとはどのような関数ですか?
指定した列(または行)を検索し、対応する別の列から値を返す関数です。左右どちらの方向でも取得でき、標準で完全一致検索が行われます。
XLOOKUPが使えるExcelのバージョンはどれですか?
Microsoft 365、Excel 2021、Excel 2024、およびWeb版Excelで使用できます。また、Googleスプレッドシートでも利用可能です。
XLOOKUPはVLOOKUPより優れていますか?
ほとんどの用途で優れています。列番号を数える必要がなく、左側の列も検索でき、標準で完全一致となり、見つからない場合のエラー処理も関数内で完結します。
XLOOKUPで複数の値を取得できますか?
1回の検索一致に対して、隣接する複数列をまとめて取得することは可能です。条件に合うすべての行を一覧で抽出したい場合は、FILTER関数を使用してください。