※本ページにはプロモーション(広告)が含まれています
ExcelのXLOOKUP関数でワイルドカードが効かない:まず確認すること
ExcelのXLOOKUP関数でワイルドカード(*や?)を使った部分一致検索を試みたのに、結果が返ってこない——この問題で行き詰まっているユーザーは少なくありません。
XLOOKUP関数はExcel 2019以降(Microsoft 365)で使える強力な検索関数ですが、ワイルドカードを有効にするには第5引数(match_mode)を正しく設定する必要があります。この引数を省略するとワイルドカードは文字通りのアスタリスクとして扱われ、一致結果が返りません。
本記事では、XLOOKUP関数のワイルドカード部分一致が機能しない原因を体系的に解説し、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) |
区別しない | × |

この記事に関連するおすすめ商品
Excel関数解説書(最新版)
約1,600円〜
XLOOKUP・FILTER・LAMBDAなど最新関数を体系的に学べる入門書
Microsoft 365 Personal(1年版)
約14,900円/年
XLOOKUP・動的配列関数が使えるExcel最新版。常に最新機能が使える
Excelデータ分析・関数辞典
約2,000円〜
関数の引数・動作・使用例を網羅した辞典形式の参考書
※ 価格は変動します。最新価格はリンク先でご確認ください
よくある質問(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に設定していないことです。この一点を修正するだけで、大多数のケースは解決します。
対処の優先順位:
=XLOOKUP("*キーワード*", 検索範囲, 戻り範囲, "なし", 2)と書く- セル参照と組み合わせる場合は
"*"&A1&"*"の形で連結する - 大文字小文字を区別したい場合はSEARCHをFINDに置き換える
- 複数条件が必要な場合はXLOOKUP+ISNUMBERの組み合わせを使う
match_modeの理解はXLOOKUPを使いこなす上で最も重要なポイントのひとつです。この記事の内容を参考に、XLOOKUP関数の部分一致検索を正しく活用してください。
minto.tech スマホ(Android/iPhone)・PC(Mac/Windows)の便利情報をお届け! 月間アクセス160万PV!スマートフォン、タブレット、パソコン、地デジに関する素朴な疑問や、困ったこと、ノウハウ、コツなどが満載のお助け記事サイトはこちら!