【Excel】VLOOKUP関数で部分一致(あいまい検索)する!Excelのワイルドカード指定の注意点

【Excel】VLOOKUP関数で部分一致(あいまい検索)する!Excelのワイルドカード指定の注意点
🛡️ 超解決

ExcelのVLOOKUP関数で、完全に一致しないデータも検索したい場面があります。例えば、商品コードの一部だけが分かっている場合や、顧客名の一部で検索したい場合などです。しかし、VLOOKUP関数の標準設定では完全一致検索しかできません。この記事では、VLOOKUP関数で部分一致検索を行う方法と、その際に注意すべき点を解説します。この手順を理解すれば、あいまいな情報からでも必要なデータを効率的に抽出できるようになります。

【要点】VLOOKUP関数で部分一致検索を行う方法と注意点

  • VLOOKUP関数とワイルドカードの組み合わせ: VLOOKUP関数で検索値にワイルドカード文字を指定すると、部分一致検索が可能です。
  • ワイルドカード文字の種類と意味: アスタリスク(*)は任意の文字列、疑問符(?)は任意の1文字を表します。
  • 検索範囲の並び順: 部分一致検索では、検索対象の列が昇順に並んでいないと正しく検索できない場合があります。
  • 完全一致検索との使い分け: 部分一致検索はあいまいなデータ検索に有効ですが、意図しない結果を招く可能性もあるため、完全一致検索との使い分けが重要です。

ADVERTISEMENT

VLOOKUP関数における部分一致検索の仕組み

VLOOKUP関数は、通常、指定した範囲の左端の列で検索値と完全に一致する値を探します。しかし、検索値に特定の記号(ワイルドカード文字)を含めることで、完全一致ではなく部分一致の検索が可能になります。これは、VLOOKUP関数の第2引数である検索範囲の最後の引数(検索方法)を「TRUE(または省略)」に設定している場合に有効な機能です。この設定は、近似一致検索とも呼ばれます。

近似一致検索では、検索値以上の最小の値を探します。ワイルドカード文字を組み合わせることで、この「検索値以上の最小の値」という挙動を応用し、検索値の一部に合致するデータを抽出できるのです。例えば、「りんご*」と指定すると、「りんご」で始まり、その後に任意の文字列が続くデータを検索対象とします。

お探しの解決策が見つからない場合は、こちらの「Excelトラブル完全解決データベース」で他のエラー原因や解決策をチェックしてみてください。

VLOOKUP関数で部分一致検索を行う手順

VLOOKUP関数で部分一致検索を行うには、検索値にワイルドカード文字を指定します。ここでは、最も一般的に使用されるアスタリスク(*)を使った例で手順を説明します。

  1. 検索したい値を用意する
    検索したい値の一部をセルに入力します。例えば、商品名の一部である「りんご」をセルD2に入力します。
  2. VLOOKUP関数を入力する
    結果を表示したいセルにVLOOKUP関数を入力します。ここでは、検索値「りんご」がセルD2にあると仮定し、検索対象のデータがA1:B10の範囲にあるとします。
  3. 例えば、商品名(A列)から商品コード(B列)を検索する場合、以下のようになります。

    `=VLOOKUP(D2&”*”,A1:B10,2,TRUE)`

  4. 数式を確定する
    数式を入力したら、Enterキーを押して確定します。

この数式では、`D2&”*”`の部分が重要です。これは、セルD2の値(「りんご」)の後ろにアスタリスク(*)を結合させています。これにより、「りんご」で始まるすべての文字列が検索対象となります。検索範囲A1:B10の1列目(A列)で「りんご」で始まる値を探し、見つかった行の2列目(B列)の値を返します。検索方法の引数はTRUE(または省略)としてください。

ワイルドカード文字の種類と使い方

VLOOKUP関数で使えるワイルドカード文字は主に2種類あります。

アスタリスク(*)

アスタリスク(*)は、任意の文字列(0文字以上)を表します。例えば、以下のような検索が可能です。

  • `りんご*`: 「りんご」で始まる文字列を検索します。(例:「りんごジュース」「りんごパイ」)
  • `*りんご`: 「りんご」で終わる文字列を検索します。(例:「ふじりんご」「紅玉りんご」)
  • `*りんご*`: 「りんご」という文字列が含まれる文字列を検索します。(例:「りんごジュース」「ふじりんご」)

疑問符(?)

疑問符(?)は、任意の1文字を表します。例えば、以下のような検索が可能です。

  • `りんご?`: 「りんご」の後ろに任意の1文字が続く文字列を検索します。(例:「りんごA」「りんごX」)
  • `?りんご`: 「りんご」の前にある任意の1文字が続く文字列を検索します。(例:「Aりんご」「Xりんご」)

これらのワイルドカード文字を組み合わせることで、より柔軟な検索が可能になります。

VLOOKUP関数で部分一致検索を行う際の注意点

VLOOKUP関数で部分一致検索を行う際には、いくつか注意すべき点があります。これらを理解せずに使用すると、意図しない結果が得られたり、データが正しく表示されなかったりする可能性があります。

検索範囲の並び順

VLOOKUP関数で検索方法の引数をTRUE(近似一致)に設定した場合、検索対象の列(VLOOKUP関数の第1引数で指定する範囲の左端の列)は、昇順(小さい順)に並べられている必要があります。もし、この列が昇順に並んでいない場合、期待通りの結果が得られないことがあります。

例えば、商品名がランダムな順序で並んでいる表で「りんご*」と検索した場合、最初に「りんご」で始まる商品が見つかったとしても、それが必ずしも表の最初にある「りんご」で始まる商品とは限りません。そのため、部分一致検索を行う前に、検索対象の列を昇順に並べ替えておくことが推奨されます。

検索される値は「最初に見つかった」値

部分一致検索では、検索値に合致する値が複数存在する場合、検索範囲の先頭から見て「最初に見つかった」値に対応する結果が返されます。例えば、以下のようなデータがあったとします。

A列(商品名): りんごジュース, りんごパイ, みかんジュース

B列(価格): 150, 200, 120

ここで、検索値として「りんご*」を使用した場合、A列の先頭から見て最初に「りんご」で始まる「りんごジュース」が見つかります。そのため、返される価格は150円となります。たとえ「りんごパイ」が「りんごジュース」よりも後にあったとしても、それは検索されません。

この挙動を理解しておかないと、「なぜか特定のデータしか取得できない」といった混乱を招く可能性があります。

完全一致検索との使い分け

部分一致検索は、あいまいな条件でデータを検索したい場合に非常に便利です。しかし、常に部分一致検索が最適とは限りません。検索値が明確に決まっている場合は、完全一致検索(検索方法の引数をFALSEに設定)を使用する方が、より確実で意図しない結果を避けることができます。

例えば、正確な商品コードで検索したい場合は、必ずFALSEを指定してください。部分一致検索は、あくまで「検索値の一部しか分からない」「検索値のパターンが決まっている」といった限定的な状況で使用するのが効果的です。

ワイルドカード文字自体を検索したい場合

もし、検索対象のデータの中に、ワイルドカード文字(*や?)そのものが含まれている場合、それらを文字通りに検索するには工夫が必要です。VLOOKUP関数では、ワイルドカード文字の前にチルダ(~)を付けることで、その文字をエスケープ(文字通りの意味として扱う)できます。

例えば、「*」という文字を含むデータを検索したい場合は、検索値として`~*`と指定します。同様に、「?」を検索したい場合は`~?`と指定します。

数式で記述する場合は、以下のようになります。

`=VLOOKUP(“~*”,A1:B10,2,TRUE)`

この場合、検索対象の列(A列)の先頭から見て、「*」という文字で始まる値が検索されます。

ADVERTISEMENT

VLOOKUP関数と他の検索関数との比較

Excelには、VLOOKUP関数以外にもデータを検索するための関数がいくつかあります。部分一致検索という観点から、それらの関数との違いを理解しておくと、より目的に合った関数を選択できます。

項目 VLOOKUP関数(近似一致) XLOOKUP関数 FILTER関数
部分一致検索の可否 ワイルドカード使用で可能 ワイルドカード使用で可能 ワイルドカード使用で可能
検索対象列の並び順 昇順である必要あり 必須ではない 必須ではない
複数条件の指定 不可(工夫が必要) 可能 可能
検索方向 左から右のみ 左右どちらも可能 左右どちらも可能
返り値 一致する最初の値(1つのみ) 一致する最初の値(1つのみ) 一致する全ての値(複数可)
利用可能バージョン Excel 2007以降 Microsoft 365, Excel 2021以降 Microsoft 365, Excel 2021以降

XLOOKUP関数やFILTER関数は、VLOOKUP関数よりも柔軟な検索が可能です。特に、検索対象列の並び順に依存しない点や、複数の条件で検索できる点、一致する全てのデータを取得できる点などが優れています。これらの関数は比較的新しいバージョンで利用可能ですが、もし利用できる環境であれば、部分一致検索においてもVLOOKUP関数より強力な選択肢となります。

まとめ

本記事では、ExcelのVLOOKUP関数で部分一致検索(あいまい検索)を行う方法と、その際の注意点について解説しました。検索値にワイルドカード文字(*や?)を指定し、検索方法の引数をTRUEにすることで、あいまいな条件でのデータ抽出が可能になります。ただし、検索対象列の並び順や、検索される値が最初に見つかったものに限られる点には注意が必要です。より新しいExcelバージョンでは、XLOOKUP関数やFILTER関数といった、さらに強力で柔軟な検索関数も利用できます。これらの知識を活用し、Excelでのデータ検索業務の効率化を図ってください。

📊
Excelトラブル完全解決データベースこの記事以外にも、様々なエラー解決策をまとめています。困った時の逆引きに活用してください。

ADVERTISEMENT

この記事の監修者
📈

超解決 Excel・Word研究班

企業のDX支援や業務効率化を専門とする技術者チーム。20年以上のExcel・Word運用改善実績に基づき、不具合の根本原因と最短の解決策を監修しています。ExcelとWordを使った「やりたいこと」「困っていること」「より便利な使い方」をクライアントの視点で丁寧に提供します。

🏆
超解決 Excel検定 あなたのExcel実務能力を3分で測定!【1級・2級・3級】