管理

XLOOKUPの実例:商品コードで名前を探し、未登録を扱う

この記事はAIの支援を受けて原文を翻訳したものです。専門用語や数式は原文とあわせて確認してください。

商品コードを入力すると商品名が出る小さな表を作ります。XLOOKUPは検索値、検索範囲、返す範囲を分けて指定します。複雑な式を作る前に、存在する値、ない値、重複をそれぞれ試すと動作を理解できます。

XLOOKUPは検索範囲と戻り範囲の同じ行を結び、例ではA102がNotebookを返す。
図 1. XLOOKUPは検索範囲と戻り範囲の同じ行を結び、例ではA102がNotebookを返す。

三行の表で完全一致を試す

A1にCode、B1にItemを入れ、A2:B4に下表を入力します。E2はA102にします。図と式を比較しやすいよう、商品名は英語の架空例のままです。

行A: CodeB: Item
2A101Pencil
3A102Notebook
4A103Eraser
=XLOOKUP(E2,$A$2:$A$4,$B$2:$B$4,"Not found",0)

結果はNotebookです。最後の0は完全一致を指定します。既定値も完全一致ですが、意図を明示しています。ドル記号は下へコピーしたとき参照表を固定し、E2は次の行でE3に変わります。

未登録と重複は別の問題

E2をA999にするとNot foundになります。これは一致がない場合の処理で、あらゆる式のエラーを隠すものではありません。0を返すと正しいゼロ値と区別しにくいので、戻すデータに合った表示を決めます。

A102が二行あれば既定の検索は最初の一致を返します。合計したり最新を判断したりはしません。コードを一意にする必要があるなら原本の重複を検査します。末尾からの検索も別設定で可能ですが、行順が時系列である場合にだけ最新という意味を持ちます。

型、空白、重複、範囲の長さ、未一致時の扱いを個別に点検する。
図 2. 型、空白、重複、範囲の長さ、未一致時の扱いを個別に点検する。

見つからない場合はデータも調べる

  • 検索と戻り範囲の対応行、行数を確認します。
  • 数値コードと文字列コードが混ざっていないか見ます。
  • 前後の空白や不要な原本文字を確認します。
  • 変換前に識別子の規則を確認します。

00123を数値123に変えると別の商品を混ぜるかもしれません。検索失敗は点検のきっかけで、値の意味を変える許可ではありません。通常のXLOOKUPを大文字・小文字を区別する識別子検証として使わず、その条件が必要なら別の検査を設計します。

旧版と合計には別の方法

Excel 2016と2019ではXLOOKUPを使えません。Microsoft 365、Excel 2021、2024など対応版を確認します。この例はINDEXと完全一致のMATCHで置き換えられます。

=INDEX($B$2:$B$4,MATCH(E2,$A$2:$A$4,0))

代替式は未登録に#N/Aを返すため、未登録処理は別に決めます。同じコードの数量を全部足すなら検索とは違う作業なのでSUMIFやSUMIFSを使います。試験用シートでA102、A999、重複したA102を確認してから実データに適用しましょう。

公式資料:XLOOKUP、MATCH、INDEX。地域設定では引数区切りがセミコロンになる場合があります。

あわせて読みたい記事

本文の理解を助けるために制作したオリジナルイラストです。