XLOOKUPの部分一致|ワイルドカードで前方・後方・含む検索

XLOOKUPの部分一致|ワイルドカードで「含む・前方・後方一致」を検索

XLOOKUPで「名前の一部を含むデータ」を探すには、検索値に * を付け、第5引数の一致モードを 2 にします。前方一致は「山田*」、後方一致は「*子」、途中に含む場合は「*一郎*」です。通常は最初に一致した1件を返します。

練習用Excelファイル(無料ダウンロード)
前方一致・中間一致・後方一致を数式入りで確認できます。XLOOKUP対応のMicrosoft 365・Excel 2024・2021で開いてください。ボタンをクリック/タップして保存し、Excelで開いてください。
Excelファイル(.xlsx)/登録不要/数式・練習データ入り
目次

まず動かしてみよう|この記事のサンプルをその場で試せます

練習用ファイルをダウンロードしなくても、記事と同じデータ・同じセル番地のサンプルをここで動かせます。黄色いセルを書き換えると、結果がその場で変わります。各解説の最後にある「▶ この式を試す」を押すと、このツールの該当セルへ移動します。

XLOOKUPの部分一致は「*」と一致モード2をセットで指定

次の例は、A2:A15の名前から「山田」で始まる人を探し、名前・年齢・出身地の3列を返します。結果を表示するE2に入力し、右隣のF2:G2は空けてください。

E2に入力:前方一致(「山田」で始まる)
数式=XLOOKUP("山田*",$A$2:$A$15,$A$2:$C$15,"該当なし",2)
ひとことで「山田」で始まる最初の人の、名前・年齢・出身地を3列まとめて返す
"山田*"
検索値です。「山田」で始まる名前を表します。* は0文字以上の任意の文字列です
$A$2:$A$15
検索する範囲(名前の列)です
$A$2:$C$15
返す範囲(名前・年齢・出身地の3列)です。3列なので、結果が右へ3つ並びます(スピル)
"該当なし"
見つからないときに表示する文字です
2
第5引数の一致モード。2 でワイルドカードを使います。省略(0)だと * が普通の文字として扱われます
データの流れ
① 名前の列から、「山田」で始まる人を探す(黄色)
山田太郎田中花子鈴木一郎山田次郎山田太一田中一郎鈴木花子佐藤太郎高橋一郎伊藤花子吉田太郎山本一郎中村花子小林太郎
▼
② 先頭の一致(山田太郎)の行が、E2〜G2に並ぶ結果
E2山田太郎F225G2東京都
ポイント検索値の「山田*」だけでは部分一致になりません。第4引数の「該当なし」の後にカンマを入れ、第5引数へ 2 を指定します。サンプルの先頭の一致は「山田太郎・25・東京都」です。
「山田」で始まる人の名前・年齢・出身地を取り出す(XLOOKUPの前方一致)式 =XLOOKUP("山田*",$A$2:$A$15,$A$2:$C$15,"該当なし",2) の解説図。E2に入力する
E2に =XLOOKUP("山田*",$A$2:$A$15,$A$2:$C$15,"該当なし",2) を入力。「山田*」は山田で始まる文字 上から最初の山田太郎の 名前・年齢・出身地を返す
練習用Excelファイル(無料ダウンロード)
サンプルのSheet1のE2で、「山田*」の結果を確認できます。名前を書き換えて、結果の変化も試せます。
Excelファイル(.xlsx)/登録不要/数式・練習データ入り

前方一致・後方一致・含む検索を使い分ける

探したい条件検索値の書き方サンプルで最初に見つかる名前
山田で始まる"山田*"山田太郎
一郎を含む"*一郎*"鈴木一郎
子で終わる"*子"田中花子
2文字目が藤"?藤*"佐藤太郎
ポイント「?」は任意の1文字、「*」は0文字以上の文字列を表します。「?藤*」には佐藤も伊藤も該当しますが、このサンプルでは佐藤太郎の行が先にあるため、佐藤太郎が返ります。[abc] や [a-z] は、このワイルドカード検索の文字集合としては使いません。

セルに入力したキーワードで検索する

E1に「一郎」などのキーワードを入力する場合は、& でアスタリスクをつなぎます。E2に入力してください。

E2に入力:セルに入力したキーワードで検索(E1に「一郎」と入力)
数式=IF(E1="","",XLOOKUP("*"&E1&"*",$A$2:$A$15,$A$2:$C$15,"該当なし",2))
ひとことでE1が空なら何も表示せず、キーワードがあれば「含む」検索で探す
E1=""
E1(キーワード)が空欄かどうかを調べます
""
空欄のときは何も表示しません。IFがないと、先頭の人が表示されてしまいます
XLOOKUP("*"&E1&"*",…)
E1の文字の前後に * をつなぎ(& は文字をつなぐ記号)、「含む」検索にします。ほかの引数は前方一致の式と同じです
データの流れ
① E1に入力したキーワード
E1一郎
▼
② 前後に * をつなぐ → 検索値は「*一郎*」
*一郎*
▼
③ 名前に「一郎」を含む最初の人を返す結果
E2鈴木一郎F228G2愛知県
ポイントIFは、キーワードが未入力のときに先頭のデータが表示されるのを防ぐためです。全角の「*」ではなく、半角の「*」を使います。

ワイルドカード「*」「?」「~」の意味と使い方

XLOOKUPの部分一致で使うワイルドカードは、次の3つです。一致モードに 2 を指定したときだけ有効で、省略(0)のままだと「*」は普通の文字として扱われ、「山田*」は「山田*」という名前を探してしまいます。

記号意味検索値の例サンプルで一致する名前
*0文字以上の任意の文字列“山田*”山田太郎・山田次郎・山田太一
?任意の1文字“?藤*”佐藤太郎・伊藤花子
~直後の * ? ~ を、ワイルドカードではなく文字として扱う“*~**”名前に「*」という文字を含む行

ワイルドカードそのものを探すには「~」を付ける

商品名に含まれるアスタリスク自体を探す場合、検索値を「*~**」にします。「~*」で文字としての * を表し、その前後の * は任意の文字列を表します。? 自体は「~?」、~ 自体は「~~」です。

「*」という文字そのものを探す
数式=XLOOKUP("*~**",$A$2:$A$15,$A$2:$C$15,"該当なし",2)
ひとことで「~*」で、ワイルドカードではなく文字としての * を表す
*
前の * は、任意の文字列を表します
~*
文字としての「*」です。~ を付けると、ワイルドカードではなく普通の文字として扱われます
*
後ろの * も、任意の文字列を表します
補足名前のどこかに「*」という文字を含む行を探す式になります。? 自体は「~?」、~ 自体は「~~」と書きます。

最後の1件と、該当する全件では数式が違う

最後に一致する1件が必要なら、第6引数の検索モードを -1 にします。第5引数の 2 はそのままです。

最後に一致した1件を返す
数式=XLOOKUP("山田*",$A$2:$A$15,$A$2:$C$15,"該当なし",2,-1)
ひとことで第6引数の検索モードを -1 にすると、下から探して最後の一致を返す
2
第5引数の一致モードは、そのまま 2 です
-1
第6引数の検索モード。最後(下)から上へ向かって探し、最後に一致した1件を返します
データの流れ
① 「山田」で始まる人は3人(黄色)
山田太郎田中花子鈴木一郎山田次郎山田太一田中一郎鈴木花子佐藤太郎高橋一郎伊藤花子吉田太郎山本一郎中村花子小林太郎
▼
② いちばん最後に一致した山田太一の行を返す結果
E2山田太一F240G2東京都
ポイント通常のXLOOKUPで戻り範囲を3列にしても、同じ条件の全行が出るわけではありません。該当する人を全員表示する手順は、特定の文字を含む行をFILTERで抽出する方法をご覧ください。

一致モード(第5引数)の違い一覧

XLOOKUPの第5引数(一致モード)は、探し方を切り替えます。部分一致で使うのは 2 です。

値探し方主な使いどころ
0(省略時)完全に一致するものだけを探す商品コードなど、同じ値を探すとき
-1完全一致。なければ次に小さい値点数や金額の「○以上」の判定(範囲検索)
1完全一致。なければ次に大きい値「以下で最小」を探すとき
2ワイルドカード(* ? ~)を使って探す部分一致(前方・後方・含む)

どこから探すかを決める第6引数(検索モード)は、1=先頭から(省略時)、-1=末尾から、2・-2=二分探索(並べ替え済みの表向け)です。範囲検索はXLOOKUPで「○以上△未満」の範囲検索をする方法で解説しています。

部分一致ができない・エラーになるときの確認表

症状確認すること
該当なしになる第5引数が2か、半角の*か、検索対象が文字列か
違う人が出る同じ条件に合う行が複数ないか。通常は先頭の1件
#VALUE!になる検索範囲と戻り範囲の行数が一致しているか
#SPILL!になる結果を返す右隣のセルや結合セルが邪魔していないか
注意部分一致は誤字や表記ゆれを自動補正する機能ではありません。「山田」と「山多」のような別の文字は一致しません。空白や全角・半角の混在も元データで確認します。

XLOOKUPの「あいまい検索」とは?部分一致との違い

「あいまい検索」と言っても、XLOOKUPでできることは2種類あります。

やりたいこと使う方法この記事・関連記事
名前の一部が合えばよい(山田で始まる、一郎を含む)ワイルドカード+一致モード 2この記事の方法
数値や日付で「以下で最大」「以上で最小」を探す一致モード -1 / 1範囲検索
注意誤字(山田→山多)や表記ゆれを自動で補正する機能ではありません。余分な空白は空白(スペース)を削除する方法、全角・半角のばらつきは全角・半角を変換する方法で、先にそろえてから検索します。
練習用Excelファイル(無料ダウンロード)
名前リストと4つの式が入った練習用ファイルです。XLOOKUP対応のMicrosoft 365・Excel 2024・2021で開いてください。
Excelファイル(.xlsx)/登録不要/数式・練習データ入り

VLOOKUPでも部分一致検索はできる

対応バージョンExcel 2019・2016でXLOOKUPが使えない場合は、VLOOKUPの検索値にワイルドカードを指定し、第4引数を FALSE にします。次は名前から年齢を返す例です。
VLOOKUPでの部分一致(Excel 2019・2016向け)
数式=VLOOKUP("山田*",$A$2:$C$15,2,FALSE)
ひとことで検索値にワイルドカードを使い、完全一致(FALSE)で探す
"山田*"
検索値です。「山田」で始まる名前を表します
$A$2:$C$15
探す範囲です。名前の列は、範囲の左端に置きます
2
範囲の左から2列目(年齢)を返します
FALSE
完全一致の指定です。この指定でワイルドカードが使えます
データの流れ
① 名前が「山田」で始まる最初の行(山田太郎)
A2山田太郎B225C2東京都
▼
② 左から2列目の年齢を返す結果
25
ポイントVLOOKUPでは検索する名前の列を指定範囲の左端に置きます。XLOOKUPはMicrosoft 365・Excel 2024・2021で利用できます。

次のステップ:見つからない場合・空白の対処

練習用Excelファイル(無料ダウンロード)
前方一致・中間一致・後方一致を数式入りで確認できます。XLOOKUP対応のMicrosoft 365・Excel 2024・2021で開いてください。ボタンをクリック/タップして保存し、Excelで開いてください。
Excelファイル(.xlsx)/登録不要/数式・練習データ入り

仕様の確認:Microsoft公式・XLOOKUP関数 / Microsoft公式・VLOOKUP関数

XLOOKUPで複数の条件を指定したいときは、XLOOKUPの複数条件の書き方(2つ・3つ以上・OR・行と列)で、すべてのパターンをまとめて解説しています。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次