ExcelでVLOOKUPの部分一致を使う方法|あいまい検索を実現するコツ

Excel

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デスクトップPC90000
DEF-001プリンター25000
DEF-002スキャナー15000
=VLOOKUP("ABC*", A2:C6, 2, FALSE)

結果: “ノートパソコン”(ABC-001の商品名)

後方一致検索

指定した文字で終わるデータを検索します。

基本構文

=VLOOKUP("*検索文字", 検索範囲, 列番号, FALSE)

実用例

ファイル拡張子での検索

A列(ファイル名)B列(ファイルサイズ)
document.pdf2.5MB
image.jpg1.2MB
report.pdf4.8MB
photo.png3.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 APC89000
PC-NB-001ノートPC APC79000
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-001503020
TK-B-001254035
OS-A-001602015

地域別検索

=VLOOKUP("TK*", 在庫!A:D, 2, FALSE)  # 東京(TK)エリアの商品在庫
=VLOOKUP("OS*", 在庫!A:D, 2, FALSE)  # 大阪(OS)エリアの商品在庫

売上分析システム

期間別売上検索

売上データ

取引日商品コード数量金額
2024-01-15PC-0012180000
2024-02-20PC-002190000
2024-03-10PR-0013105000

月別検索

=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 の活用

大量データの高速検索

  1. データ → データの取得
  2. フィルター条件で部分一致を設定
  3. 結果をワークシートに出力

まとめ

ExcelでVLOOKUPの部分一致を使う方法について、重要なポイントをまとめます:

基本的な手法

ワイルドカードの活用

  • 前方一致: "検索文字*"
  • 後方一致: "*検索文字"
  • 含む検索: "*検索文字*"
  • 任意文字: "検索文字?"

必須の設定

  • 第4引数は必ずFALSEを指定
  • 完全一致モードでワイルドカードを使用

実用的な活用方法

業務での応用

  • 商品コード検索システム
  • 顧客名による部分検索
  • 在庫管理での分類別検索
  • 売上分析での期間別検索

効率化のコツ

  • セル参照による動的検索
  • IFERROR関数でエラー処理
  • 適切な検索範囲の設定

注意すべきポイント

制限事項

  • 最初にヒットしたデータのみ取得
  • 大文字・小文字は区別されない
  • 半角・全角の文字種に注意

トラブル回避

  • ワイルドカードの正しい記述
  • データの文字種統一
  • エラーハンドリングの実装

コメント

タイトルとURLをコピーしました