XLOOKUPの実例:商品コードで名前を探し、未登録を扱う
この記事はAIの支援を受けて原文を翻訳したものです。専門用語や数式は原文とあわせて確認してください。
商品コードを入力すると商品名が出る小さな表を作ります。XLOOKUPは検索値、検索範囲、返す範囲を分けて指定します。複雑な式を作る前に、存在する値、ない値、重複をそれぞれ試すと動作を理解できます。
三行の表で完全一致を試す
A1にCode、B1にItemを入れ、A2:B4に下表を入力します。E2はA102にします。図と式を比較しやすいよう、商品名は英語の架空例のままです。
| 行 | A: Code | B: Item |
|---|---|---|
| 2 | A101 | Pencil |
| 3 | A102 | Notebook |
| 4 | A103 | Eraser |
=XLOOKUP(E2,$A$2:$A$4,$B$2:$B$4,"Not found",0)結果はNotebookです。最後の0は完全一致を指定します。既定値も完全一致ですが、意図を明示しています。ドル記号は下へコピーしたとき参照表を固定し、E2は次の行でE3に変わります。
未登録と重複は別の問題
E2をA999にするとNot foundになります。これは一致がない場合の処理で、あらゆる式のエラーを隠すものではありません。0を返すと正しいゼロ値と区別しにくいので、戻すデータに合った表示を決めます。
A102が二行あれば既定の検索は最初の一致を返します。合計したり最新を判断したりはしません。コードを一意にする必要があるなら原本の重複を検査します。末尾からの検索も別設定で可能ですが、行順が時系列である場合にだけ最新という意味を持ちます。
見つからない場合はデータも調べる
- 検索と戻り範囲の対応行、行数を確認します。
- 数値コードと文字列コードが混ざっていないか見ます。
- 前後の空白や不要な原本文字を確認します。
- 変換前に識別子の規則を確認します。
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。地域設定では引数区切りがセミコロンになる場合があります。
あわせて読みたい記事
本文の理解を助けるために制作したオリジナルイラストです。