ExcelのVLOOKUP関数で、完全に一致しないデータも検索したい場面があります。例えば、商品コードの一部だけが分かっている場合や、顧客名の一部で検索したい場合などです。しかし、VLOOKUP関数の標準設定では完全一致検索しかできません。この記事では、VLOOKUP関数で部分一致検索を行う方法と、その際に注意すべき点を解説します。この手順を理解すれば、あいまいな情報からでも必要なデータを効率的に抽出できるようになります。
【要点】VLOOKUP関数で部分一致検索を行う方法と注意点
- VLOOKUP関数とワイルドカードの組み合わせ: VLOOKUP関数で検索値にワイルドカード文字を指定すると、部分一致検索が可能です。
- ワイルドカード文字の種類と意味: アスタリスク(*)は任意の文字列、疑問符(?)は任意の1文字を表します。
- 検索範囲の並び順: 部分一致検索では、検索対象の列が昇順に並んでいないと正しく検索できない場合があります。
- 完全一致検索との使い分け: 部分一致検索はあいまいなデータ検索に有効ですが、意図しない結果を招く可能性もあるため、完全一致検索との使い分けが重要です。
ADVERTISEMENT
目次
VLOOKUP関数における部分一致検索の仕組み
VLOOKUP関数は、通常、指定した範囲の左端の列で検索値と完全に一致する値を探します。しかし、検索値に特定の記号(ワイルドカード文字)を含めることで、完全一致ではなく部分一致の検索が可能になります。これは、VLOOKUP関数の第2引数である検索範囲の最後の引数(検索方法)を「TRUE(または省略)」に設定している場合に有効な機能です。この設定は、近似一致検索とも呼ばれます。
近似一致検索では、検索値以上の最小の値を探します。ワイルドカード文字を組み合わせることで、この「検索値以上の最小の値」という挙動を応用し、検索値の一部に合致するデータを抽出できるのです。例えば、「りんご*」と指定すると、「りんご」で始まり、その後に任意の文字列が続くデータを検索対象とします。
VLOOKUP関数で部分一致検索を行う手順
VLOOKUP関数で部分一致検索を行うには、検索値にワイルドカード文字を指定します。ここでは、最も一般的に使用されるアスタリスク(*)を使った例で手順を説明します。
- 検索したい値を用意する
検索したい値の一部をセルに入力します。例えば、商品名の一部である「りんご」をセルD2に入力します。 - VLOOKUP関数を入力する
結果を表示したいセルにVLOOKUP関数を入力します。ここでは、検索値「りんご」がセルD2にあると仮定し、検索対象のデータがA1:B10の範囲にあるとします。 - 数式を確定する
数式を入力したら、Enterキーを押して確定します。
例えば、商品名(A列)から商品コード(B列)を検索する場合、以下のようになります。
`=VLOOKUP(D2&”*”,A1:B10,2,TRUE)`
この数式では、`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でのデータ検索業務の効率化を図ってください。
ADVERTISEMENT
超解決 Excel・Word研究班
企業のDX支援や業務効率化を専門とする技術者チーム。20年以上のExcel・Word運用改善実績に基づき、不具合の根本原因と最短の解決策を監修しています。ExcelとWordを使った「やりたいこと」「困っていること」「より便利な使い方」をクライアントの視点で丁寧に提供します。
Office・仕事術の人気記事ランキング
- 【Word】差し込み印刷で数字の桁を整える!金額にカンマ(桁区切り)を入れる設定
- 【Teams】メッセージを「保存済み」にして後で読む!重要なチャットをブックマークして整理する技
- 【Outlook】宛先が「オートコンプリート」に出ない・間違っている時の修正手順|履歴の削除と再構築
- 【Excel】矢印キーで「セルが動かず画面がスクロールする」!ScrollLockの解除方法(ノートPC対応)
- 【Outlook】メールの受信が数分遅れる!リアルタイムで届かない時の同期設定と送受信グループ設定
- 【Outlook】予定表の「祝日」が表示されない!最新カレンダーの追加と二重表示の修正手順
- 【Outlook】「メール送信を5分遅らせる」設定!誤送信を防ぐ最強のディレイ機能
- 【Word】校閲機能の基本!赤字(変更履歴)とコメントで修正を見える化する
- 【神技】保存せずに閉じたExcel・Wordファイルを復元する!消えたデータを復活させる4つの救出法
- 【Excel】文字がセルの枠からはみ出す・隠れる!「折り返して表示」と「縮小して全体を表示」の使い分け
