原因と対策
似ているが異なる文字を検索値にしている
検索範囲にある文字を検索値として指定しているつもりが、実は異なる文字だったというケースです。
次の画像ではB5セルに記号のマル(○)が入力されているのですが、E3セルに入力されているXLOOKUP関数の検索値(第1引数)は漢数字のゼロなので検索に失敗し、結果はエラーとなっています。
当然ですがこの検索値をマルに代えれば抽出は成功します。
このようにしてもうまくいかない場合は「セル中の文字の前後にスペースが含まれている」というケースも考えられますのでチェックしてみてください。
文字列と数値を比較している
次の画像のB列の値は「'101」や「'103」のように入力されたもので、見た目は数値ですが実際は文字列として記録されています。
一方でE3セルに入力されているXLOOKUP関数の検索値「103」は数値なので検索に失敗し、エラーとなっています。このように文字列が入っている範囲から数値を検索したり、その逆の検索をしようとしてもうまくいきません。
この場合は検索値を文字列として指定する、つまり検索値を「"103"」とすることでうまくいきます。
日付の指定の仕方が誤っている
次の画像ではB列に日付が入力されています。
E3セルのXLOOKUP関数の検索値は「2024/11/3」となっており、B4セルの値に該当しているように見えますがうまくいかずエラーとなっています。
これは検索値の「2024/11/3」が「2024÷11÷3」という数値(=61.333…)とみなされるためです。
しかしこれを「"2024/11/3"」に代えてもうまくいきません。COUNTIF関数やSUMIF関数のような感覚でついこのように記してしまいがちですが、XLOOKUP関数では日付とはみなされないので注意が必要です。
そこで検索値を「DATEVALUE("2024/11/3")」とすればうまくいきます。
つまり日付を表すシリアル値(数値)に変換して検索するわけですが、ダブルクォーテーション(")を忘れないことが注意点です。
書式設定(表示形式)による文字を含めて指定している
次の画像ではB列に文字列が入力されています。
E3セルのXLOOKUP関数の検索値は「遠藤 様」となっており、B5セルの値に該当しているように見えますが結果はエラーとなっています。
そこでB5セルの値を確認したところ、単に「遠藤」となっています。
つまり「 様」の部分は書式設定(表示形式)により表示されているものであり、セルに記録されている値ではないということがわかります。
そこで検索値を単に「"遠藤"」とすることでうまく抽出できました。
記録されているのが数値の場合でも同様のことが起こります。
ここではB列の値にハイフン(-)が入っているように見えますがこれは書式設定(表示形式)によるもので、実際は数値が記録されています。
この場合は検索値を「29693」という数値にすることでB5セルの値にマッチし、うまく抽出できました。
大文字・小文字/全角・半角が区別されないことによる誤抽出
次の画像のE3セルの数式では検索値を「"A01"」という全角大文字の文字列にしています。
これはB5セルの値に一致しているので「いちご大福」が抽出されるように思えますが、実際はB3セルの「a01」(半角小文字)にマッチしてしまうため「栗ようかん」が抽出されています。
このようにXLOOKUP関数の検索では大文字と小文字が区別されず、かつ全角と半角も区別されません。実用上それほど気にする必要はないかと思いますが、VLOOKUP関数だと(同様に大文字と小文字が区別されないものの)全角と半角は区別されるというちょっとした違いがあります。
大小文字、全半角を厳密に区別する場合は一例として数式を次のようにします。
E3セル
=XLOOKUP(TRUE,EXACT(B3:B6,"A01"),C3:C6)
EXACT関数を使い、B3:B6のそれぞれの値が「A01」に厳密に一致するかを判定した結果(TRUE/FALSE)を得ます。そこからTRUEを検索して、対応する位置にあるC列の値を取得するという式です。
参考までに「EXACT(B3:B6,"A01")」の部分だけ実行すると次のようになります。
この4つの値からTRUEを検索すれば、その位置に対応する「いちご大福」が得られることがわかります。