Excel VLOOKUP関数で特定文字列を含む(前方一致、部分一致、後方一致)検索を行う方法
はじめに
VLOOKUP関数の通常の使用方法では、完全一致または近似一致でのデータ検索が可能ですが、「特定の文字列を含むデータ」や「先頭が一致するデータ」を探したい場合には不向きです。
本記事では、ワイルドカード(*)を活用することで、前方一致、部分一致、後方一致といった柔軟な検索を実現する方法を解説します。
また、ワイルドカードが機能しない場合のトラブル対処法や、VLOOKUP関数では解決できない応用課題への対応策も提示します。
概要解説動画
検索値を正確に捉える:VLOOKUPの基本機能の復習
VLOOKUP関数は、表の左端列を検索し、該当する行から指定した列の値を取得する関数です。
第4引数の「検索の型」では、完全一致(FALSE)または近似一致(TRUE)のいずれかを指定します。
VLOOKUP関数の基本的な制約として、通常の使用方法では検索値と完全に一致するデータ、あるいは近似値しか取得できません。
例えば「東京」という検索値では「東京都」や「東京支店」といったデータは取得できず、完全一致する「東京」のみが検索対象となります。
本記事では、この制約を克服し、以下のような検索を実現する方法を扱います。
- 特定の文字列が含まれる(部分一致)データの取得
- 先頭が一致する(前方一致)データの取得
- 末尾が一致する(後方一致)データの取得
VLOOKUPで特定文字列を「あいまい検索」する仕組み
VLOOKUP関数で部分一致や前方一致といったあいまい検索を実現するキーワードは、ワイルドカード(*)です。
ワイルドカードは、任意の数の文字列を表す特殊な記号です。
0文字も含むため、例えば「東京*」という検索値は「東京」「東京都」「東京支店」のいずれにも一致します。
ワイルドカードをVLOOKUP関数で利用する際は、第1引数の検索値にワイルドカードを組み込みます。
検索値が文字列の場合はダブルクォーテーションで囲み、セル参照の場合は&演算子で結合します。
重要な条件として、ワイルドカードを使用する際は第4引数の検索の型を必ずFALSE(完全一致)に設定する必要があります。
この設定により、ワイルドカードを含むパターンマッチングが有効になります。
【実例】ワイルドカード(*)を使った3つの検索パターン
ワイルドカードの配置位置により、検索の動作が変わります。
以下、具体的な3つのパターンを解説します。
前方一致検索
前方一致検索は、セルの先頭の文字列が検索値と一致するデータを抽出する方法です。
例えば「東京」で前方一致検索を行うと、「東京都」「東京支店」「東京タワー」などが該当します。
数式の記述方法として、検索値の後にワイルドカード*を付けます。
=VLOOKUP("東京*", A2:B10, 2, FALSE)
セル参照を使用する場合は、以下のように&演算子で結合します。
=VLOOKUP(D2&"*", A2:B10, 2, FALSE)
この数式では、D2セルの値(例:「東京」)の後に*が付加され、「東京*」というパターンで検索が実行されます。
後方一致検索
後方一致検索は、セルの末尾の文字列が検索値と一致するデータを抽出する方法です。
例えば「支店」で後方一致検索を行うと、「東京支店」「大阪支店」「名古屋支店」などが該当します。
数式の記述方法として、検索値の前にワイルドカード(*)を付けます。
=VLOOKUP("*支店", A2:B10, 2, FALSE)
セル参照を使用する場合の記述例は以下の通りです。
=VLOOKUP("*"&D2, A2:B10, 2, FALSE)
部分一致検索(含む検索)
部分一致検索は、セル内のどこかに検索値の文字列が含まれるデータを抽出する方法です。
例えば「東京」で部分一致検索を行うと、「東京都」「大東京」「日本国東京都渋谷区」などが該当します。
数式の記述方法として、検索値の前後に*を付けます。
=VLOOKUP("*東京*", A2:B10, 2, FALSE)
セル参照を使用する場合は、以下のように前後に*を配置します。
=VLOOKUP("*"&D2&"*", A2:B10, 2, FALSE)
この方法は「特定の文字列を含む」検索として、最も柔軟な検索パターンとなります。
応用編:VLOOKUPで部分一致の「逆引き」
VLOOKUP関数は表の左端列でのみ検索が可能であり、検索値が右側の列にある場合(逆引き)には対応できません。
例えば、A列に名前、B列にコードがある表で、コードから名前を取得することはVLOOKUP関数では実現できません。
この制約を克服する方法として、INDEX関数とMATCH関数の組み合わせが有効です。
=INDEX(A2:A48, MATCH("*東京*", B2:B48, 0))
この数式では、MATCH関数がB列(検索範囲)で「東京」を含むデータの位置を特定し、INDEX関数がその位置に対応するA列の値を返します。
MATCH関数の第3引数を0にすることで、ワイルドカードを使用した部分一致検索が可能になります。
INDEX関数とMATCH関数の組み合わせは、VLOOKUP関数よりも柔軟性が高く、検索列の位置に制約がないため、複雑なデータ構造にも対応できます。
トラブルシューティング:ワイルドカードが「使えない」場合の対処法
ワイルドカードを使用したVLOOKUP関数が期待通りに動作しない場合、以下のチェックポイントを確認してください。
チェックポイント1:検索の型(第4引数)はFALSEか
ワイルドカードを使用する際は、必ずVLOOKUP関数の第4引数をFALSE(完全一致)に指定する必要があります。
TRUE(近似一致)や省略した場合、ワイルドカードは機能しません。
誤った例:
=VLOOKUP("*東京*", A2:B10, 2, TRUE)
正しい例:
=VLOOKUP("*東京*", A2:B10, 2, FALSE)
第4引数をFALSEに設定することで、Excelはワイルドカードを特殊文字として認識し、パターンマッチングを実行します。
チェックポイント2:ワイルドカード自体を文字として検索したい場合
データ内に実際の*(アスタリスク)記号が含まれており、その記号自体を検索したい場合は、*の前に~(チルダ)を付けて~*とする必要があります。
同様に、?(クエスチョンマーク)もワイルドカードとして意味があるため文字として検索する場合は~?とします。
例えば、「東京*?~」という文字列を検索する場合:
=VLOOKUP("東京~*~?~~", A2:B10, 2, FALSE)
~(チルダ)は、直後の文字をワイルドカードではなく通常の文字として扱うエスケープ記号として機能します。
チェックポイント3:検索値がセル参照の場合の記述方法
検索値をセル参照で指定する場合、ワイルドカードを&演算子で正確に結合する必要があります。
記述ミスによりワイルドカードが機能しないケースが多く見られます。
誤った例:
=VLOOKUP(*D2*, A2:B10, 2, FALSE)
正しい例:
=VLOOKUP("*"&D2&"*", A2:B10, 2, FALSE)
&演算子の前後にスペースを入れないこと、ワイルドカード部分をダブルクォーテーションで囲むことが重要です。
セル参照とワイルドカードの結合が正しく行われていない場合、エラーまたは意図しない検索結果となります。
XLOOKUPでワイルドカードを使う方法
XLOOKUP関数は、Excel 365およびExcel 2021以降で使用可能な新しい検索関数です。
VLOOKUP関数の制約を解消した設計となっており、ワイルドカードの使用も可能です。
XLOOKUP関数でワイルドカードを使用する際の重要な相違点として、一致モード(第5引数)に2を指定する必要があります。
この指定を省略すると、ワイルドカードは機能しません。
基本的な記述例:
=XLOOKUP("*東京*", B2:B10, A2:A10, "", 2)
各引数の意味は以下の通りです。
- 第1引数:検索値(ワイルドカード含む)
- 第2引数:検索範囲
- 第3引数:戻り値の範囲
- 第4引数:見つからない場合の戻り値
- 第5引数:一致モード(2 = ワイルドカード文字一致)
XLOOKUP関数のワイルドカード検索では、VLOOKUP関数と同様に*の配置により前方一致、後方一致、部分一致を使い分けることができます。
また、XLOOKUP関数は検索列の位置制約がなく、VLOOKUP関数の「逆引き」問題も自然に解決できる利点があります。
セル参照を使用する場合の記述例:
=XLOOKUP("*"&D2&"*", B2:B10, A2:A10, "", 2)
XLOOKUP関数が使用できる環境では、ワイルドカード検索においてもXLOOKUP関数の利用を推奨します。
まとめと次のステップ
本記事では、VLOOKUP関数とワイルドカード(*)を組み合わせた部分一致、前方一致、後方一致の検索方法を解説しました。
検索値の前後に*を配置することで、完全一致では対応できない柔軟な検索が可能になります。
ワイルドカードが機能しない場合は、第4引数がFALSEであることの確認、セル参照時の&演算子による正確な結合、XLOOKUPでは一致モードに2を指定することを確認してください。
VLOOKUP関数の構造的な制約である逆引きや複数結果の取得については、INDEX関数とMATCH関数やフィルタ機能といった代替手段の活用が効率的です。
また、Excel 365以降の環境ではXLOOKUP関数の使用により、より直感的で柔軟な検索処理が実現できます。
これらの手法を日々の業務に取り入れることで、データ検索と照合作業の効率が向上し、手動での確認作業を削減できます。
関連項目
XLOOKUP(VLOOKUP)関数の使い方・活用方法の記事一覧
Excel完全マスター: 関数・テクニック・新機能を網羅した決定版ガイド
本書は、Excelの基礎から応用まで、包括的に学べるガイドブックです。当サイトの豊富な情報を、電子書籍向けに最適化し、読みやすく再構成しました。
【本書の特徴】
- 情報量:Word-A4サイズ換算で1,400ページ相当
- 基本操作から高度なテクニックまで、段階的に学習可能
- 140種類の関数を詳細に解説
- 109種類の実用的なテクニックと具体例を紹介
- 最新機能(XLOOKUP関数、LET関数、シートビュー、LAMBDA関数、スピル等)を徹底解説
【対象読者】
- Excel初心者からプロフェッショナルまで
- 体系的にExcelスキルを向上させたい方
- 業務効率化を目指すビジネスパーソン
- データ分析や可視化のスキルを磨きたい方
【本書の強み】
- 実務に即した例題と解説
- 視覚的な図表やスクリーンショットで理解を促進
- 最新のExcelバージョンに対応した内容
- 著者の長年の経験に基づく、実践的なTipsを多数収録
【更新とサポート】
- 常に最新の情報を反映するため、定期的に内容を更新
- 最新版の入手方法:Amazonカスタマーサポートへお問い合わせください
【入手方法】
- 買い切り:950円
- Kindle Unlimited:読み放題プランで利用可能
Excelマスターを目指す方、業務効率を劇的に向上させたい方に、自信を持っておすすめできる一冊です。この1冊で、Excelの可能性を最大限に引き出す力が身につきます。