Excel(エクセル)のVLOOKUPはとても便利ですが、基本は完全一致で検索します。
「一部の文字だけ分かっていて、それに合うデータを探したい」と思ったときに、どうしたらいいか分からず困った経験はありませんか?
よくある困った状況
Excel作業でこんな場面に遭遇することがあります:
完全一致の限界
- 商品コード検索:「ABC-001」の「ABC」部分だけ覚えているが、完全なコードが分からない
- 顧客名検索:「田中商事」か「田中工業」か曖昧だが、「田中」は確実に含まれている
- 住所検索:「東京都」で始まる住所を一括で抽出したい
- 品番管理:型番の一部から関連商品を見つけたい
手作業での確認の手間
- 目視確認:大量のデータから該当するものを手作業で探している
- フィルター作業:毎回フィルターをかけ直して確認
- 複数回検索:思い当たるパターンを何度も検索している
部分一致検索で解決できること
VLOOKUPの部分一致機能を使うことで:
柔軟な検索の実現
- 前方一致:指定した文字で始まるデータを検索
- 後方一致:指定した文字で終わるデータを検索
- 含む検索:指定した文字を含むデータを検索
- 任意文字検索:一部の文字が不明でも検索可能
業務効率の大幅改善
- 検索時間の短縮:曖昧な情報からでも瞬時に結果を取得
- 入力ミスの軽減:完全な情報を覚えている必要がない
- データ抽出の自動化:手動フィルターが不要
この記事で学べること
この記事では、以下について詳しく解説します:
- VLOOKUPの検索方式の基本理解
- ワイルドカードを使った部分一致の具体的方法
- 実際の業務で使える活用例とコツ
- よくあるトラブルとその解決方法
- より高度な部分一致テクニック
最後まで読めば、VLOOKUPを使った柔軟で効率的なデータ検索ができるようになります。
VLOOKUPの検索方式の基本

VLOOKUPの構文復習
=VLOOKUP(検索値, 検索範囲, 列番号, 検索方法)
各引数の詳細
引数 | 内容 | 例 |
---|---|---|
検索値 | 探したいデータ | “商品A” |
検索範囲 | 検索対象の表 | A2:D100 |
列番号 | 取得したい列の位置 | 3 |
検索方法 | TRUE(近似)/FALSE(完全) | FALSE |
検索方法の2つのパターン
FALSE(完全一致)
特徴
- 検索値と完全に同じデータのみヒット
- データの並び順は関係なし
- 一般的によく使われる方法
例
=VLOOKUP("商品A", A2:C10, 2, FALSE)
TRUE(近似一致)
特徴
- 検索値に最も近い値を検索
- データは昇順に並んでいる必要がある
- 主に数値の範囲検索で使用
例
=VLOOKUP(85, A2:C10, 2, TRUE) # 成績表から評価を検索
「近似一致」と「部分一致」の違い
多くの人が混同しがちな重要な概念です。
近似一致(TRUE)
- 用途: 数値の範囲検索
- 例: 点数から成績評価を取得
- 条件: データが昇順にソートされている必要
部分一致(文字列の含む検索)
- 用途: 文字列の一部での検索
- 例: 商品コードの一部から商品情報を取得
- 実現方法: ワイルドカードを使用
ワイルドカードを使った部分一致
ワイルドカードの基本
VLOOKUPでは、以下のワイルドカード文字を使用できます:
アスタリスク(*)
- 意味: 0文字以上の任意の文字列
- 用途: 前方一致、後方一致、含む検索
クエスチョンマーク(?)
- 意味: 任意の1文字
- 用途: 特定位置の文字が不明な場合
前方一致検索
指定した文字で始まるデータを検索します。
基本構文
=VLOOKUP("検索文字*", 検索範囲, 列番号, FALSE)
実用例
商品コード検索
A列(商品コード) | B列(商品名) | C列(価格) |
---|---|---|
ABC-001 | ノートパソコン | 80000 |
ABC-002 | デスクトップPC | 90000 |
DEF-001 | プリンター | 25000 |
DEF-002 | スキャナー | 15000 |
=VLOOKUP("ABC*", A2:C6, 2, FALSE)
結果: “ノートパソコン”(ABC-001の商品名)
後方一致検索
指定した文字で終わるデータを検索します。
基本構文
=VLOOKUP("*検索文字", 検索範囲, 列番号, FALSE)
実用例
ファイル拡張子での検索
A列(ファイル名) | B列(ファイルサイズ) |
---|---|
document.pdf | 2.5MB |
image.jpg | 1.2MB |
report.pdf | 4.8MB |
photo.png | 3.1MB |
=VLOOKUP("*.pdf", A2:B6, 2, FALSE)
結果: “2.5MB”(最初に見つかったPDFファイルのサイズ)
含む検索(中間一致)
指定した文字を含むデータを検索します。
基本構文
=VLOOKUP("*検索文字*", 検索範囲, 列番号, FALSE)
実用例
顧客名での検索
A列(顧客名) | B列(電話番号) |
---|---|
田中商事株式会社 | 03-1234-5678 |
佐藤工業有限会社 | 03-2345-6789 |
田中製作所 | 03-3456-7890 |
=VLOOKUP("*田中*", A2:B4, 2, FALSE)
結果: “03-1234-5678″(最初に見つかった「田中」を含む顧客の電話番号)
任意文字検索
特定位置の文字が不明な場合に使用します。
基本構文
=VLOOKUP("AB?-001", 検索範囲, 列番号, FALSE)
実用例
品番の一部が不明な場合
A列(品番) | B列(商品名) |
---|---|
ABA-001 | 商品A |
ABB-001 | 商品B |
ABC-001 | 商品C |
=VLOOKUP("AB?-001", A2:B4, 2, FALSE)
結果: “商品A”(最初に該当パターンに一致した商品)
セル参照と組み合わせた動的検索

基本的な動的検索
検索文字列をセルから取得して、動的に部分一致検索を行います。
文字列結合による前方一致
設定例
- D1セル: “ABC”(検索したい文字列)
- E1セル:
=VLOOKUP(D1&"*", A2:C10, 2, FALSE)
実用的な活用例
商品カテゴリ検索システム
D列 | E列 | F列 |
---|---|---|
検索カテゴリ | 商品名 | 価格 |
ABC | =VLOOKUP(D2&”*”, A:C, 2, FALSE) | =VLOOKUP(D2&”*”, A:C, 3, FALSE) |
複雑な検索パターン
前後に文字を追加した検索
=VLOOKUP("*"&D1&"*", A2:C10, 2, FALSE)
この関数により、D1セルの内容を含む任意のデータを検索できます。
複数条件の組み合わせ
=VLOOKUP(D1&"-"&E1&"*", A2:C10, 2, FALSE)
D1とE1の内容をハイフンでつなぎ、さらにその後に任意の文字が続くパターンを検索します。
実際の業務での活用例
商品管理システム
商品コード検索システム
マスタデータ
商品コード | 商品名 | カテゴリ | 単価 |
---|---|---|---|
PC-DT-001 | デスクトップPC A | PC | 89000 |
PC-NB-001 | ノートPC A | PC | 79000 |
PR-LJ-001 | レーザープリンター | プリンター | 35000 |
PR-IJ-001 | インクジェットプリンター | プリンター | 15000 |
検索システム
検索条件 | 結果 |
---|---|
PC | =VLOOKUP(A2&”*”, マスタ!A:D, 2, FALSE) |
PR | =VLOOKUP(A3&”*”, マスタ!A:D, 2, FALSE) |
顧客管理システム
顧客名による検索
顧客データベース
顧客ID | 顧客名 | 住所 | 電話番号 |
---|---|---|---|
C001 | 田中商事株式会社 | 東京都… | 03-1111-2222 |
C002 | 佐藤工業有限会社 | 大阪府… | 06-3333-4444 |
C003 | 田中製作所 | 埼玉県… | 048-5555-6666 |
部分検索機能
=VLOOKUP("*"&B2&"*", 顧客DB!A:D, 3, FALSE)
B2セルに「田中」と入力すると、田中を含む最初の顧客の住所が表示されます。
在庫管理システム
倉庫別在庫検索
在庫データ
商品コード | 倉庫A在庫 | 倉庫B在庫 | 倉庫C在庫 |
---|---|---|---|
TK-A-001 | 50 | 30 | 20 |
TK-B-001 | 25 | 40 | 35 |
OS-A-001 | 60 | 20 | 15 |
地域別検索
=VLOOKUP("TK*", 在庫!A:D, 2, FALSE) # 東京(TK)エリアの商品在庫
=VLOOKUP("OS*", 在庫!A:D, 2, FALSE) # 大阪(OS)エリアの商品在庫
売上分析システム
期間別売上検索
売上データ
取引日 | 商品コード | 数量 | 金額 |
---|---|---|---|
2024-01-15 | PC-001 | 2 | 180000 |
2024-02-20 | PC-002 | 1 | 90000 |
2024-03-10 | PR-001 | 3 | 105000 |
月別検索
=VLOOKUP("2024-01*", 売上!A:D, 4, FALSE) # 1月の売上データ
高度な部分一致テクニック

複数ヒットの処理
VLOOKUPは最初にヒットしたデータしか返しませんが、以下の方法で複数ヒットを処理できます。
IFERROR と組み合わせた連続検索
# 1番目のヒット
=VLOOKUP("ABC*", A:C, 2, FALSE)
# 2番目のヒット(1番目以降から検索)
=IFERROR(VLOOKUP("ABC*", OFFSET(A:C, MATCH("ABC*", A:A, 0), 0), 2, FALSE), "")
INDEX・MATCH との組み合わせ
より柔軟な検索のためにINDEX・MATCH関数と組み合わせます。
基本的な組み合わせ
=INDEX(B:B, MATCH("ABC*", A:A, 0))
複数条件での部分一致
=INDEX(C:C, MATCH(1, (ISNUMBER(SEARCH("ABC", A:A)))*(B:B="カテゴリ1"), 0))
この配列数式により、A列に「ABC」を含み、かつB列が「カテゴリ1」のデータを検索できます。
正規表現的な検索
複雑なパターンマッチング
=VLOOKUP("A??-???", A:C, 2, FALSE) # Aで始まり、4文字目がハイフンの7文字パターン
エスケープ処理
ワイルドカード文字そのものを検索したい場合:
=VLOOKUP("商品~*コード", A:C, 2, FALSE) # 「商品*コード」という文字列を検索
チルダ(~)を使って、アスタリスクをエスケープします。
よくあるトラブルと解決方法
#N/A エラーが出る場合
原因1:該当データが存在しない
症状
- 部分一致で検索しても#N/Aエラーが返される
解決方法
=IFERROR(VLOOKUP("ABC*", A:C, 2, FALSE), "該当なし")
原因2:ワイルドカードの記述ミス
よくある間違い
=VLOOKUP("ABC", A:C, 2, FALSE) # ワイルドカードなし
正しい記述
=VLOOKUP("ABC*", A:C, 2, FALSE) # アスタリスクを追加
期待したデータが見つからない
原因1:検索範囲の設定ミス
問題のある例
=VLOOKUP("ABC*", A2:C10, 2, FALSE) # ヘッダー行が除外されている
改善例
=VLOOKUP("ABC*", A:C, 2, FALSE) # 列全体を指定
原因2:データの文字種問題
半角・全角の混在
- 検索値:「ABC」(半角)
- データ:「ABC」(全角)
解決方法
=VLOOKUP(ASC("ABC")*"", A:C, 2, FALSE) # 半角に統一
=VLOOKUP(JIS("ABC")*"", A:C, 2, FALSE) # 全角に統一
第4引数の設定ミス
よくある間違い
=VLOOKUP("ABC*", A:C, 2, TRUE) # TRUEは部分一致検索では使わない
正しい設定
=VLOOKUP("ABC*", A:C, 2, FALSE) # 部分一致でもFALSEを使用
重要な理解
- ワイルドカードを使った部分一致は、第4引数を必ずFALSEにする
- TRUEは数値の近似検索専用
パフォーマンスの問題
大量データでの検索が遅い
問題
- 列全体(A:C)を検索範囲にしているため処理が重い
改善方法
# 具体的な範囲を指定
=VLOOKUP("ABC*", A2:C1000, 2, FALSE)
# 名前定義を使用
=VLOOKUP("ABC*", 商品マスタ, 2, FALSE)
より効率的な代替手法
FILTER関数の活用(Excel 365)
複数ヒットの一括取得
=FILTER(B:C, ISNUMBER(SEARCH("ABC", A:A)))
この関数により、「ABC」を含む全てのデータを一度に取得できます。
XLOOKUP関数の活用(Excel 365)
より柔軟な部分一致
=XLOOKUP("ABC*", A:A, B:B, "該当なし", 2)
XLOOKUP関数では、デフォルトで部分一致がサポートされています。
Power Query の活用
大量データの高速検索
- データ → データの取得
- フィルター条件で部分一致を設定
- 結果をワークシートに出力
まとめ
ExcelでVLOOKUPの部分一致を使う方法について、重要なポイントをまとめます:
基本的な手法
ワイルドカードの活用
- 前方一致:
"検索文字*"
- 後方一致:
"*検索文字"
- 含む検索:
"*検索文字*"
- 任意文字:
"検索文字?"
必須の設定
- 第4引数は必ずFALSEを指定
- 完全一致モードでワイルドカードを使用
実用的な活用方法
業務での応用
- 商品コード検索システム
- 顧客名による部分検索
- 在庫管理での分類別検索
- 売上分析での期間別検索
効率化のコツ
- セル参照による動的検索
- IFERROR関数でエラー処理
- 適切な検索範囲の設定
注意すべきポイント
制限事項
- 最初にヒットしたデータのみ取得
- 大文字・小文字は区別されない
- 半角・全角の文字種に注意
トラブル回避
- ワイルドカードの正しい記述
- データの文字種統一
- エラーハンドリングの実装
コメント