Home / Microsoft / Excel / 【2026年最新版】ExcelのXLOOKUP関数でワイルドカード部分一致が返されない原因と対処法【完全ガイド】

【2026年最新版】ExcelのXLOOKUP関数でワイルドカード部分一致が返されない原因と対処法【完全ガイド】

※本ページにはプロモーション(広告)が含まれています

ExcelのXLOOKUP関数でワイルドカードが効かない:まず確認すること

ExcelのXLOOKUP関数でワイルドカード(*?)を使った部分一致検索を試みたのに、結果が返ってこない——この問題で行き詰まっているユーザーは少なくありません。

XLOOKUP関数はExcel 2019以降(Microsoft 365)で使える強力な検索関数ですが、ワイルドカードを有効にするには第5引数(match_mode)を正しく設定する必要があります。この引数を省略するとワイルドカードは文字通りのアスタリスクとして扱われ、一致結果が返りません。

本記事では、XLOOKUP関数のワイルドカード部分一致が機能しない原因を体系的に解説し、match_modeの正しい使い方から応用テクニックまで詳しく説明します。

match_mode引数の設定確認

この記事でわかること

  • XLOOKUP関数のmatch_mode引数の意味と設定値
  • ワイルドカード部分一致を有効にする正しい書き方
  • 検索値に「”*”&A1&”*”」を使った前後一致の方法
  • 大文字小文字の扱いとXLOOKUPの制限
  • SEARCH関数・FIND関数との組み合わせ方法
  • よくある間違いとその修正方法

XLOOKUP関数の基本構文とmatch_mode引数

XLOOKUP関数の基本構文

XLOOKUP関数の基本的な書き方は以下の通りです:

=XLOOKUP(検索値, 検索範囲, 戻り範囲, [見つからない場合], [match_mode], [search_mode])

引数は6つありますが、ワイルドカードを使った部分一致に関係するのは第1引数(検索値)と第5引数(match_mode)です。

match_mode引数の設定値

第5引数のmatch_modeには以下の4つの値を設定できます:

設定値 動作 用途
0(省略時の既定値) 完全一致 通常の検索
-1 完全一致またはそれより小さい最大値 範囲検索(数値)
1 完全一致またはそれより大きい最小値 範囲検索(数値)
2 ワイルドカード一致(*、?、~が有効) 部分一致・パターン検索

重要:match_modeを省略するかゼロに設定すると、*は「任意の文字列」ではなく「アスタリスクそのもの」として扱われます。これがワイルドカードが効かない最大の原因です。

ワイルドカードが効かない原因と解決策

原因1:match_mode引数の省略または誤設定

最もよくある原因は、第5引数を省略または0に設定したままワイルドカードを使っていることです。

間違った書き方(ワイルドカードが効かない)

=XLOOKUP("*東京*", A2:A100, B2:B100)
=XLOOKUP("*東京*", A2:A100, B2:B100, "なし", 0)

正しい書き方(ワイルドカードが有効)

=XLOOKUP("*東京*", A2:A100, B2:B100, "なし", 2)

第5引数を2に設定することで、*東京*が「東京を含む任意の文字列」として機能します。

原因2:検索値のワイルドカードの位置が間違っている

ワイルドカードの配置によって一致の種類が変わります:

検索値の書き方 一致パターン 例(「東京」を検索)
"東京*" 前方一致(東京で始まる) 「東京都」「東京駅」に一致
"*東京" 後方一致(東京で終わる) 「新東京」「大東京」に一致
"*東京*" 部分一致(東京を含む) 「東京都渋谷区」「新東京駅」に一致
"東京??" 東京+任意の2文字 「東京都庁」「東京駅前」に一致
検索値の文字列連結とワイルドカード使用法

原因3:セル参照とワイルドカードの文字列連結が間違っている

検索キーワードをセルから参照してワイルドカードと組み合わせる場合は、文字列連結演算子(&)を使います。

セル参照を使ったワイルドカード検索の正しい書き方

たとえばA1セルに「東京」と入力されていて、「東京」を含む行を検索する場合:

=XLOOKUP("*"&A1&"*", B2:B100, C2:C100, "なし", 2)

前方一致にする場合:

=XLOOKUP(A1&"*", B2:B100, C2:C100, "なし", 2)

よくある間違い

=XLOOKUP("*A1*", B2:B100, C2:C100, "なし", 2)

上記はA1を文字列として扱ってしまい、「A1という文字列を含む行」を検索します。セル参照は引用符の外に出して&でつなぐ必要があります。

原因4:大文字小文字の区別の問題

XLOOKUPのワイルドカード一致(match_mode=2)は大文字と小文字を区別しません。「Tokyo」で検索した場合、「tokyo」「TOKYO」「Tokyo」すべてにマッチします。

大文字小文字を区別した部分一致検索が必要な場合は、XLOOKUP単体では対応できません。後述のEXACT関数やFIND関数を組み合わせたアプローチが必要です。

原因5:検索範囲にスペースや特殊文字が含まれている

検索範囲のセルに全角・半角スペースや非表示文字が混入していると、期待通りの一致が得られません。

  • TRIM()関数でスペースを除去してから検索する
  • CLEAN()関数で非表示文字を除去する
  • XLOOKUP内でTRIMを組み合わせる例:=XLOOKUP("*東京*", TRIM(A2:A100), B2:B100, "なし", 2)

SEARCH関数・FIND関数との組み合わせ方法

XLOOKUPとSEARCH関数の組み合わせ

XLOOKUP単体のワイルドカードでは最初に一致した1件しか返せませんが、SEARCH関数と組み合わせることで、より柔軟な検索が可能になります。

=XLOOKUP(TRUE, ISNUMBER(SEARCH("東京", A2:A100)), B2:B100, "なし")

この書き方の動作:

  • SEARCH("東京", A2:A100):各セルで「東京」の位置を返す(見つからなければエラー)
  • ISNUMBER(...):数値が返ったセル(一致したセル)をTRUEに変換
  • XLOOKUP(TRUE, ...):TRUEになった最初のセルに対応するB列の値を返す

SEARCH関数は大文字小文字を区別しません。区別したい場合はSEARCHをFINDに置き換えてください。

FIND関数との組み合わせ(大文字小文字を区別する場合)

=XLOOKUP(TRUE, ISNUMBER(FIND("Tokyo", A2:A100)), B2:B100, "なし")

FINDは大文字小文字を厳密に区別するため、「Tokyo」と入力した場合「tokyo」や「TOKYO」にはマッチしません。

複数の部分一致条件を組み合わせる(AND条件)

「東京」かつ「渋谷」を含む行を検索する例:

=XLOOKUP(TRUE, (ISNUMBER(SEARCH("東京", A2:A100)))*(ISNUMBER(SEARCH("渋谷", A2:A100))), B2:B100, "なし")

条件を*でつなぐことでAND条件になります。

各手法の比較表

手法 書き方の例 大文字小文字区別 複数条件
XLOOKUP match_mode=2 XLOOKUP("*東京*",...,2) 区別しない △(限定的)
XLOOKUP + SEARCH XLOOKUP(TRUE, ISNUMBER(SEARCH(...)),...) 区別しない ○(AND/OR可)
XLOOKUP + FIND XLOOKUP(TRUE, ISNUMBER(FIND(...)),...) 区別する ○(AND/OR可)
VLOOKUP ワイルドカード VLOOKUP("*東京*",...,FALSE) 区別しない ×
SEARCH/FIND関数との組み合わせ方法
🛒

この記事に関連するおすすめ商品

Excel関数解説書(最新版)

約1,600円〜

XLOOKUP・FILTER・LAMBDAなど最新関数を体系的に学べる入門書

🛒 Amazonで探す

Microsoft 365 Personal(1年版)

約14,900円/年

XLOOKUP・動的配列関数が使えるExcel最新版。常に最新機能が使える

🛒 Amazonで探す

Excelデータ分析・関数辞典

約2,000円〜

関数の引数・動作・使用例を網羅した辞典形式の参考書

🛒 Amazonで探す

※ 価格は変動します。最新価格はリンク先でご確認ください

よくある質問(FAQ)

Q1. match_modeを2に設定してもエラーが出ます

match_mode=2はExcel 2019以降(Microsoft 365を含む)で利用できます。Excel 2016以前では利用できないため、その場合はVLOOKUP関数のワイルドカード(VLOOKUPはデフォルトでワイルドカードをサポート)かINDEX+MATCH+SEARCHの組み合わせを検討してください。

Q2. XLOOKUPのワイルドカードで最初の一致だけでなく全件取得できますか?

XLOOKUP単体では最初の1件のみ返します。全件取得にはFILTER関数との組み合わせが有効です。たとえば「東京」を含む全行を取得するには:=FILTER(B2:B100, ISNUMBER(SEARCH("東京", A2:A100)))のようにFILTER関数とSEARCH関数を組み合わせてください。

Q3. 「~」(チルダ)はどう使いますか?

ワイルドカード文字そのもの(アスタリスクや疑問符)を検索したい場合はチルダ(~)をエスケープ文字として使います。"~*"は「アスタリスクという文字」を、"~?"は「疑問符という文字」を検索します。

Q4. match_mode=2で?(疑問符)ワイルドカードも使えますか?

はい、使えます。?は任意の1文字にマッチします。たとえば"東京??"は「東京」に続く任意の2文字にマッチするため、「東京都庁」「東京銀座」などに一致します。

Q5. XLOOKUP関数はVLOOKUPよりもワイルドカード検索が優れていますか?

基本的なワイルドカード検索はVLOOKUPでもサポートされていますが、XLOOKUPはより柔軟です。VLOOKUPは検索列が必ず左端でなければならない制約がありますが、XLOOKUPは任意の列を検索範囲に指定できます。また、XLOOKUPはmatch_modeで一致条件を明示的に指定するため、意図しないワイルドカード動作が起きにくい設計になっています。

Q6. 数値データにワイルドカードを使いたい場合はどうしますか?

ワイルドカードは文字列にのみ有効であり、数値データには使えません。数値の部分一致(たとえば先頭が「03」の電話番号)を検索したい場合は、あらかじめTEXT関数で数値を文字列に変換するか、検索列を文字列形式で保存しておく必要があります。

まとめ

ExcelのXLOOKUP関数でワイルドカード部分一致が機能しない最大の原因は、第5引数(match_mode)を2に設定していないことです。この一点を修正するだけで、大多数のケースは解決します。

対処の優先順位:

  1. =XLOOKUP("*キーワード*", 検索範囲, 戻り範囲, "なし", 2) と書く
  2. セル参照と組み合わせる場合は "*"&A1&"*" の形で連結する
  3. 大文字小文字を区別したい場合はSEARCHをFINDに置き換える
  4. 複数条件が必要な場合はXLOOKUP+ISNUMBERの組み合わせを使う

match_modeの理解はXLOOKUPを使いこなす上で最も重要なポイントのひとつです。この記事の内容を参考に、XLOOKUP関数の部分一致検索を正しく活用してください。

Check Also

ExcelのCopilotデータ分析でグラフ範囲が正しくない対処法

【2026年最新版】ExcelのCopilotデータ分析でグラフの範囲が正しくない原因と対処法【完全ガイド】

ExcelのCopilotでグ …