ExcelのVLOOKUP関数であいまい検索をする方法をお探しですね。
広告
ExcelのVLOOKUPで「あいまい検索」する方法を分かりやすく解説
Excelで商品名や住所、氏名などを検索するとき、「完全に一致しなくても、一部の文字が含まれていればヒットしてほしい」と思ったことはありませんか?通常のVLOOKUPは完全一致で使うことが多いので、そのままだと#N/Aエラーが出てしまうことがあります。
この記事では、VLOOKUPで「部分一致」や「あいまい検索」をする方法を、初心者の方にも分かりやすく解説していきます。
1. VLOOKUPの「部分一致」って何?
まず、VLOOKUP関数のおさらいです。
VLOOKUPは、表の左端の列から検索したい値を探して、同じ行にある別の列のデータを取り出してくれる便利な関数です。
基本の書き方はこんな感じです。
`=VLOOKUP(検索値, 範囲, 列番号, 検索方法)`
普段よく使うのは、検索方法のところに「FALSE」を指定して、ピッタリ一致するデータだけを探す使い方ですよね。
例えば商品コード「A001」と完全に一致する行を見つけて、その価格を表示する、みたいな感じです。
では「部分一致」とは何でしょうか?これは、検索したい文字列の一部が含まれていればOKという、ゆるめの検索方法です。
例えば、こんな商品名の一覧があるとします。
– 筆箱(ブラック)
– ノート ブラック
– ブラック替芯
この中から「ブラック」という文字を含む商品の価格を取り出したい場合に使えます。
完全一致だと「ブラック」という商品名そのものしか見つけられませんが、部分一致なら「ブラック」という文字が含まれていればすべて検索対象になります。
商品名や住所、部署名付きの氏名など、表記にバラつきがあるデータを扱うときにとても便利な方法です。
**ちょっと注意!**
VLOOKUPの第4引数(検索方法)に「TRUE」を指定する「近似一致」と、今回説明する「部分一致」は別物です。
TRUEは主に数値データで「近い値」を探すときに使うもので、「文字列の一部を含むものを探す」という意味ではありません。
文字列の一部を含む検索をしたいときは、「ワイルドカード」というものを使って、検索方法は基本的に「FALSE」を指定します。
2. ワイルドカード「*」と「?」の使い方
VLOOKUPで部分一致検索をするには、「ワイルドカード」という特殊な記号を使います。
ワイルドカードは「何でもいい文字」を表す記号で、Excelでは主に「*(アスタリスク)」と「?(クエスチョンマーク)」の2つを使います。
記号の意味
| 記号 | 意味 | 使用例 |
|—|—|—|
| * | 何文字でもOK(0文字でもOK) | “*東京*” → 「東京都」「新宿区東京支店」「東京営業所」など |
| ? | 何でもいいけど1文字だけ | “?田” → 「山田」「佐田」など(「佐々木」は×) |
| ~ | *や?の記号そのものを検索したいとき | “~*” → アスタリスク記号を検索 |
「*」は文字数を問わないので、よく使います。
「?」は文字数を限定したいときに便利です。
実際に使ってみよう
例えば、A列に商品名、B列に価格が入っている表があるとします。
「ブラック」という文字を含む商品の価格を取得したいときは、こう書きます。
`=VLOOKUP(“*ブラック*”,A2:B10,2,FALSE)`
この式では、検索値の前後に「*」を付けています。
これで「ブラック」の前後にどんな文字があってもヒットするようになります。
– 「筆箱ブラック」→ ○
– 「ブラックボールペン」→ ○
– 「高級ブラックノート」→ ○
全部ヒットします!
「?」の使い方
「?」は1文字だけを表すので、文字数を限定したいときに使います。
例えば「?木」と指定すると、
– 「鈴木」→ ○(前に1文字)
– 「青木」→ ○(前に1文字)
– 「佐々木」→ ×(前に2文字)
こんな感じで、文字数の条件も指定できます。
**使い分けのコツ:** 幅広く探したいなら「*」、文字数まで絞り込みたいなら「?」と覚えておきましょう。
3. セルに入力した言葉で検索する方法
実際の仕事では、数式の中に直接「ブラック」とか「東京」と書くより、別のセルに検索したい言葉を入力して使う方が便利です。
例えば、D2セルに検索キーワードを入力して、A2:B10の表から該当する価格を返したい場合は、こう書きます。
`=VLOOKUP(“*”&D2&”*”,A2:B10,2,FALSE)`
ポイント
「*」だけをダブルクォーテーション(”)で囲んで、セル番地のD2は囲みません。
「&」でつなぎます。
もし「”*D2*”」と書いてしまうと、Excelは「D2」という文字そのものを探してしまうので注意してください。
前方一致・後方一致の使い方
部分一致には、いくつかパターンがあります。
**前方一致**:指定した文字列で「始まる」ものを探す
– 書き方:`D2&”*”`
– 例:「絵の具」で始まる商品を探す → 「絵の具*」
**後方一致**:指定した文字列で「終わる」ものを探す
– 書き方:`”*”&D2`
– 例:「ブラック」で終わる商品を探す → 「*ブラック」
**含む検索**:どこかに含まれていればOK
– 書き方:`”*”&D2&”*”`
– 例:「ブラック」を含む商品を探す → 「*ブラック*」
実例:住所から氏名を探す
住所一覧から「大阪市」を含む人の氏名を取り出したい場合、住所がA列、氏名がB列、検索語がD2セルにあるなら、こう書きます。
`=VLOOKUP(“*”&D2&”*”,A2:B100,2,FALSE)`
D2セルに「大阪市」と入力すれば、「大阪市北区」「大阪市中央区」など、大阪市を含む住所の人の氏名が取り出せます。
部署名付きの氏名から検索する場合も同じです。
「営業部 山田太郎」「経理部 山田太郎」のようなデータに対して、検索語に「山田太郎」だけを入れれば、部署名の部分は「*」が吸収してくれるので、ちゃんと検索できます。
4. よくある失敗と対策
VLOOKUPの部分一致検索でつまずきやすいポイントをまとめました。
失敗① 検索方法に「TRUE」を指定してしまう
「あいまい検索」という言葉から、第4引数を「TRUE」にしてしまう人がいますが、これは間違いです。
TRUEは主に数値の「近似一致」を探すもので、文字列の部分一致検索とは別物です。
文字列の一部を含むデータを探す場合は、基本的に「FALSE」を指定します。
省略すると自動的にTRUEになってしまうので、必ず「FALSE」と書きましょう。
失敗② 複数の該当データがあるとき
VLOOKUPは、一致するデータが複数あっても、最初に見つかった1件しか返してくれません。
例えば「ブラック」を含む商品が5つある表で「*ブラック*」と検索すると、一番上にある商品の価格だけが表示されます。
これはVLOOKUPの仕様です。
複数の該当データを全部表示したい場合は、VLOOKUP以外の方法を使う必要があります。
– FILTER関数(新しいExcelで使える)
– オートフィルター
– Power Query
などを検討してみてください。
失敗③ 全角・半角や余分なスペースがある
見た目は同じでも、内部的に違っている場合があります。
– 全角と半角が混ざっている
– 名前の前後に余分なスペースが入っている
– 改行が含まれている
– 表記ゆれ(「丁目」と「-」など)
特に外部システムから取り込んだデータは、こういった問題が起こりやすいです。
**対策:**
– TRIM関数で余分なスペースを削除する
– CLEAN関数で不要な制御文字を取り除く
– 検索語の表記を統一する
検索する前に、データをきれいに整えることも大切です。
失敗④ 検索したい列が左側にない
VLOOKUPには「検索する列は指定範囲の一番左でないといけない」という制約があります。
例えば、B列で検索してA列の値を返したい、みたいなことはVLOOKUPだけでは難しいです。
**解決方法:**
Microsoft 365やExcel 2021以降を使っている方は、「XLOOKUP関数」が使えます。
XLOOKUPなら検索範囲と戻り範囲を別々に指定できて、ワイルドカード検索も簡単です。
`=XLOOKUP(“*”&D2&”*”,A2:A10,B2:B10,”見つかりません”,2)`
一致モードに「2」を指定すると、ワイルドカード検索ができます。
まとめ:まずは基本パターンを覚えよう
VLOOKUPで部分一致・あいまい検索をする方法は、検索値に「*」や「?」を組み合わせるだけなので、基本を押さえれば難しくありません。
**覚えておきたい基本パターン:**
– **含む検索**:`”*”&セル&”*”`
– **前方一致**:`セル&”*”`
– **後方一致**:`”*”&セル`
そして、これらのポイントも頭に入れておきましょう。
✓ 複数一致しても、返ってくるのは最初の1件だけ
✓ 「TRUE」は文字列の部分一致検索ではない
✓ データの表記ゆれや余分なスペースに注意
✓ 検索方法は基本「FALSE」を指定する
この記事の内容を実際に試してみて、少しずつ慣れていってください。
部分一致検索ができるようになると、Excelでのデータ検索がグッと楽になりますよ!
広告
