ExcelのXLOOKUP関数の使い方|VLOOKUPとの違い・使えない原因まで解説

Excel

Excelで作業していると、関数の名前は知っていても、実際の表に入れた瞬間に詰まることがある。範囲の大きさ、空白、文字列の扱い、Excelのバージョン差など、公式の構文だけでは見落としやすい点は多い。

この記事では、Excel XLOOKUP関数を実務の作業メモとして整理する。関数の説明だけで終わらせず、どこで使い、どこで崩れやすく、他の方法とどう使い分けるかまで見ていく。

Excel XLOOKUP関数とは

XLOOKUP関数は、指定した値を検索して対応する値を返す関数だ。VLOOKUPの後継にあたる位置づけで、検索範囲と戻り範囲を別々に指定できる点が大きな違いである。VLOOKUPで必要だった「何列目を返すか」という列番号の指定が不要になり、列の追加・削除による式崩れが起きにくい。

ただし、使えるのはMicrosoft 365またはExcel 2021以降だ。共有先のExcel環境で開くファイルに使う場合は、相手側のバージョンを先に確認しておくのが無難である。

ロコ
XLOOKUPは便利だが、相手先のExcelで開けるかは別問題。共有先の環境は先に見る。

基本構文

excel

=XLOOKUP(lookup_value,lookup_array,return_array,[if_not_found],[match_mode],[search_mode])
  • lookup_value(必須):検索したい値
  • lookup_array(必須):検索する範囲(1列または1行)
  • return_array(必須):返す値がある範囲
  • if_not_found(省略可):一致しなかったときに返す値。省略すると #N/A が表示される
  • match_mode(省略可):一致の種類。0が完全一致(省略時のデフォルト)
  • search_mode(省略可):検索の方向。1が先頭から(省略時のデフォルト)

関数名が認識されない場合は、式を直す前にExcelのバージョンや更新チャネルを確認したい。

基本例

excel

=XLOOKUP(E2,A2:A100,C2:C100,"該当なし")

E2の値をA列で検索し、一致した行のC列の値を返す。一致しない場合は「該当なし」を表示する。最初は小さい範囲で動作を確認してから実表に広げるとよい。いきなり全体に入れると、エラーが出たときに原因の切り分けが難しくなる。

実務でよく使うパターン

社員IDから氏名や部署を返す

社員IDが入力されたセル(E2)を起点に、社員マスタのID列を検索して氏名や部署を返す使い方だ。

excel

=XLOOKUP(E2,社員マスタ[社員ID],社員マスタ[氏名],"該当なし")

テーブル参照にしておくと、社員の追加・削除が起きても範囲が自動で広がるため式が崩れにくい。return_arrayを 社員マスタ[部署] に変えるだけで返す列を切り替えられるのも、VLOOKUPと比べて変更しやすい点だ。

商品コードから単価を返す

注文書や見積書など、商品コードを入力したら単価が自動で入る仕組みを作るときの基本形だ。

excel

=XLOOKUP(E2,商品マスタ[商品コード],商品マスタ[単価],"該当なし")

商品コードの書式(文字列か数値か)が検索側と一致していないと、正しく検索できないことがある。エラーが出た場合はまず元データの型を確認する。

検索列の左側にある値を返す

VLOOKUPは検索列より右の列しか返せないが、XLOOKUPは検索範囲と戻り範囲を独立して指定するため、左側の列も返せる。

excel

=XLOOKUP(E2,C2:C100,A2:A100,"該当なし")

C列で検索してA列(左側)の値を返す例だ。表の構造を変えずに左方向の検索ができるのは、XLOOKUPの実務上の利点のひとつである。

よくあるエラー・うまくいかない原因

  • 関数名が認識されない:ExcelのバージョンがMicrosoft 365またはExcel 2021以降かを確認する
  • lookup_arrayとreturn_arrayのサイズが合っていない:行数または列数が異なると結果が崩れる。それぞれの範囲が同じサイズになっているかを見る
  • 完全一致しない:match_modeを省略すると完全一致(0)になる。近似一致やバイナリ検索を使う場合は、データが昇順・降順に並んでいる前提があることを確認する

エラーが出たときは、関数の引数だけでなく元データの状態を見るのが先決だ。空白に見えるセルにスペースが入っている、日付に見える値が文字列になっている、といった原因は実務でよく起きる。

ロコ
式を長くする前に、元データの型、空白、範囲サイズを確認する。ここを飛ばすと、正しい式でも期待通りに動かない。

似た関数・古いやり方との使い分け

XLOOKUPはVLOOKUPと比べて、列番号の指定が不要・左方向の検索が可能・一致しない場合の表示を引数で設定できるという点で扱いやすい。

一方、VLOOKUPはExcel 2010以降であれば使えるため、古い環境と共有するファイルでは今も現役だ。既存ファイルに組み込まれたVLOOKUPを無理に書き換える必要はない。新規で作るファイルでバージョンの問題がなければXLOOKUPを選ぶ、という使い分けで十分である。

他の関数との組み合わせ

  • FILTER関数:複数条件で絞り込んだ結果をXLOOKUPに渡すより、複数行を返したい場合はFILTERの方が向いている場面もある。役割の違いを意識して使い分けるとよい
  • SUMIFS関数:「一致した値を合計したい」場合はXLOOKUPではなくSUMIFSを使う。XLOOKUPは単一の値を返す関数であり、集計には向いていない
  • LET関数:同じ範囲を複数回参照する式が長くなった場合、LETで中間結果に名前を付けると読みやすくなる

複数の関数を組み合わせるときは、まず「何をしたいか」を役割ごとに分けて考えるとよい。検索・抽出・集計・並べ替えをひとつの式に詰め込むと後から読みにくくなる。

まとめ

Excel XLOOKUP関数は、VLOOKUPの使いにくさを解消した検索関数だ。列番号の指定が不要で、左方向の検索にも対応している。一方で、使える環境がExcel 2021またはMicrosoft 365以降に限られるため、共有先のバージョン確認は先に済ませておきたい。

範囲・データ型・空白・バージョンまで含めて把握しておくと、式の失敗原因を切り分けやすくなる。

コメント

タイトルとURLをコピーしました