Excelで「検索した値に対応する別の情報を取得したい」と思ったことはありませんか?
たとえば次のようなケースです。
- 商品コードから商品名を自動表示したい
- 社員番号を入力すると、隣の列に所属部署を表示したい
- 顧客名から住所を検索して取得したい
このように、「ある範囲の中から任意の値を探して、隣のセル(または同じ行の別列)の値を取り出す」場面は、実務で頻出します。
この記事では、初心者から中級者まで役立つ「検索して隣のセルの値を取得する」方法を、
VLOOKUP・INDEX・MATCH・XLOOKUPなどを使って体系的に解説します。
目次
- ✅ 基本:検索して隣のセルを取得する考え方
- ✅ 方法①:VLOOKUP関数で隣の値を取得する(基本)
- ・VLOOKUPの構文
- ・引数の意味
- ・例1:商品コードから商品名を取得
- ・例2:セル参照で動的に検索
- ✅ 方法②:INDEX関数とMATCH関数の組み合わせで柔軟に検索
- ・INDEX関数の構文
- ・MATCH関数の構文
- ・組み合わせ例
- ・例:社員番号から名前を取得
- ・例2:右方向検索(VLOOKUPではできない)
- ✅ 方法③:XLOOKUP関数でシンプルに検索(Excel 365以降)
- ・XLOOKUP関数の構文
- ・例:商品コードから商品名を取得
- ・例2:左方向検索
- ・例3:部分一致検索
- ✅ 方法④:検索結果を複数返す(FILTER関数)
- ・FILTER関数の構文
- ・例:商品コードに一致するすべての取引履歴を抽出
- ・例:部分一致で抽出
- ✅ 方法⑤:値が見つからないときにエラーを防ぐ(IFERROR)
- ・IFERROR関数の構文
- ・例1:エラー時に空欄を返す
- ・例2:メッセージを表示
- ✅ 方法⑥:部分一致や曖昧検索を行いたい場合
- ・例:商品名に「りんご」を含む行の価格を取得
- ✅ 実務での活用例
- ✅ まとめ:Excelで範囲から値を検索して隣のセルを取得する方法をマスターしよう
✅ 基本:検索して隣のセルを取得する考え方
まずは考え方の基本を理解しておきましょう。
Excelで「検索して隣のセルを取得する」とは、
次の流れで処理を行うことを意味します。
- 検索値を指定(例:「A001」という商品コード)
- 指定範囲の中でその値を探す
- 見つかった行の隣(または任意の列)の値を返す
この処理を行う代表的な関数がVLOOKUP関数やXLOOKUP関数です。
まずは最も定番のVLOOKUPから見ていきましょう。
✅ 方法①:VLOOKUP関数で隣の値を取得する(基本)
VLOOKUP関数は、「ある範囲から検索して隣の列の値を返す」ための定番関数です。
・VLOOKUPの構文
"=VLOOKUP(検索値, 範囲, 列番号, 検索方法)"
・引数の意味
引数 | 内容 |
---|---|
検索値 | 探したい値(例:セルA2など) |
範囲 | 検索対象となる表の範囲 |
列番号 | 返したい列(範囲の左端を1とする) |
検索方法 | FALSE:完全一致/TRUE:近似一致 |
・例1:商品コードから商品名を取得
A列 | B列 |
---|---|
A001 | りんご |
A002 | みかん |
A003 | ぶどう |
C2セルに次の式を入力:
"=VLOOKUP(A2, A2:B4, 2, FALSE)"
結果 → 「A001」に対応する「りんご」が表示されます。
・POINT
- 検索値(A2)を範囲の最左列に配置する必要あり
- 列番号は「返したいデータが範囲内で何列目か」で指定
- 完全一致の場合はFALSEを指定するのが基本
参考:【Excel】VLOOKUP関数の使い方をやさしく解説|Excelの検索・参照を自動化しよう!
・例2:セル参照で動的に検索
"=VLOOKUP(D2, A2:B100, 2, FALSE)"
D2に「A002」と入力すれば、「みかん」が自動表示されます。
VLOOKUPは、単純な「検索+隣の値取得」では最もよく使われる関数です。
しかし、範囲の左端しか検索できないという制約があります。
✅ 方法②:INDEX関数とMATCH関数の組み合わせで柔軟に検索
VLOOKUPの制限を解消できるのが、INDEX関数+MATCH関数の組み合わせです。
これを使うと、検索列が右にあっても自由に値を取得できます。
・INDEX関数の構文
"=INDEX(返したい範囲, 行番号)"
・MATCH関数の構文
"=MATCH(検索値, 検索範囲, [照合の種類])"
・組み合わせ例
"=INDEX(B2:B100, MATCH(D2, A2:A100, 0))"
・意味
- MATCHで、A列の中からD2の値を探し、何行目かを取得
- INDEXで、B列の同じ行の値を返す
・例:社員番号から名前を取得
A列 | B列 |
---|---|
1001 | 佐藤 |
1002 | 鈴木 |
1003 | 高橋 |
D2に社員番号「1002」を入力して、
E2セルに次の式を入力:
"=INDEX(B2:B4, MATCH(D2, A2:A4, 0))"
結果 → 「鈴木」
・POINT
- MATCHは「行番号」を返す
- INDEXは「行番号」に対応する値を返す
- VLOOKUPのように「左端限定」ではないため、柔軟
・例2:右方向検索(VLOOKUPではできない)
A列 | B列 |
---|---|
名前 | 社員番号 |
佐藤 | 1001 |
鈴木 | 1002 |
→ 「社員番号」から「名前」を取得する場合もOK。
"=INDEX(A2:A4, MATCH(1002, B2:B4, 0))"
この方法は、VLOOKUPよりも構造が自由で、
「列の順番が変わっても壊れない」という大きなメリットがあります。
✅ 方法③:XLOOKUP関数でシンプルに検索(Excel 365以降)
Excel 365または2021以降では、XLOOKUP関数が登場しました。
これは、VLOOKUPとINDEX+MATCHの長所を組み合わせた最新関数です。
・XLOOKUP関数の構文
"=XLOOKUP(検索値, 検索範囲, 返す範囲, [見つからないとき], [一致モード], [検索モード])"
・例:商品コードから商品名を取得
"=XLOOKUP(D2, A2:A100, B2:B100, "該当なし")"
A列 | B列 |
---|---|
A001 | りんご |
A002 | みかん |
A003 | ぶどう |
D2が「A003」なら結果は「ぶどう」になります。
・POINT
- 検索範囲と返す範囲を自由に設定可能
- 検索列が右でも左でもOK
- 見つからない場合の値("該当なし"など)を設定できる参考:【Excel】【トラブル解決】XLOOKUPで見つからない・#N/Aになる原因と対処法|検索失敗時の設定と実務活用のコツ
・例2:左方向検索
"=XLOOKUP(D2, B2:B100, A2:A100)"
→ 「商品名」から「商品コード」を取得可能。
VLOOKUPでは不可能だった逆方向検索にも対応します。
・例3:部分一致検索
"=XLOOKUP("東", A2:A100, B2:B100,,2)"
→ 「東」を含むセルを検索して隣の値を返す。
検索モードを「2」にするとワイルドカード検索が可能になります。
XLOOKUPは、VLOOKUP・INDEX・MATCHの機能をすべて網羅しつつ、
構文もシンプルで覚えやすいのが特徴です。
✅ 方法④:検索結果を複数返す(FILTER関数)
もし、同じ検索条件に複数の該当データがある場合は、
FILTER関数を使うと一覧で抽出できます(Excel 365以降)。
・FILTER関数の構文
"=FILTER(抽出範囲, 条件範囲=検索値)"
・例:商品コードに一致するすべての取引履歴を抽出
"=FILTER(B2:D100, A2:A100=G2)"
A列 | B列 | C列 | D列 |
---|---|---|---|
A001 | りんご | 東京 | 120 |
A002 | みかん | 大阪 | 90 |
A001 | りんご | 名古屋 | 110 |
→ G2に「A001」と入力すると、りんごの行だけ抽出。
・POINT
- FILTERは複数一致も自動対応
- 動的に更新される(再入力不要)
- 部分一致検索も可能(SEARCH関数と組み合わせ)
・例:部分一致で抽出
"=FILTER(A2:D100, ISNUMBER(SEARCH("東",B2:B100)))"
→ 「東」を含む行のみ抽出可能。
✅ 方法⑤:値が見つからないときにエラーを防ぐ(IFERROR)
VLOOKUPやINDEX+MATCHは、検索値が存在しない場合に「#N/A」エラーになります。
このエラーを防ぐには、IFERROR関数を組み合わせましょう。
・IFERROR関数の構文
"=IFERROR(元の式, エラー時の返す値)"
・例1:エラー時に空欄を返す
"=IFERROR(VLOOKUP(D2,A2:B100,2,FALSE),"")"
→ 該当しない場合は空白に。
・例2:メッセージを表示
"=IFERROR(INDEX(B2:B100, MATCH(D2, A2:A100, 0)),"該当なし")"
→ 見つからない場合に「該当なし」と表示される。
参考:【Excel】IFERROR関数で空白を返す方法|エラー時にすっきり見せる実務テクニック
・POINT
- データ未登録や入力ミスに強くなる
- 見た目がすっきりし、ユーザーにも優しい
- 検索+IFERRORの組み合わせは実務の定番
✅ 方法⑥:部分一致や曖昧検索を行いたい場合
検索値が完全一致でなくても、SEARCH関数を組み合わせることで部分一致検索が可能です。
・例:商品名に「りんご」を含む行の価格を取得
"=INDEX(C2:C100, MATCH(TRUE, ISNUMBER(SEARCH("りんご",B2:B100)), 0))"
(Ctrl + Shift + Enter で配列数式として確定)
・POINT
- SEARCH関数は部分一致を検出
- MATCH関数でTRUEの位置を探す
- INDEXで該当行の隣の値を返す
この方法は「一部の文字だけで検索したい」場合に非常に便利です。
✅ 実務での活用例
シナリオ | 使用関数 | 効果 |
---|---|---|
商品コードから商品名を取得 | VLOOKUP | 定番・最速 |
顧客名から住所を取得(列順が逆) | INDEX+MATCH | 柔軟な検索構造 |
社員IDから部署を表示 | XLOOKUP | 新関数で簡潔に記述 |
特定条件の複数データを抽出 | FILTER | 動的リスト化 |
不一致時に空欄を返す | IFERROR | 見た目を整える |
あいまい検索で最初に一致する値を取得 | SEARCH+MATCH | 部分一致対応 |
これらを使い分けることで、
「どんな検索パターンにも対応できる」汎用的なスキルが身につきます。
✅ まとめ:Excelで範囲から値を検索して隣のセルを取得する方法をマスターしよう
- VLOOKUP:最も手軽に隣の値を取得
- INDEX+MATCH:順序に関係なく柔軟に検索
- XLOOKUP:Excel 365以降で最も使いやすい新関数
- FILTER:複数該当データを自動抽出
- IFERROR:見つからないときのエラー回避
- SEARCH:部分一致・あいまい検索にも対応
Excelの「検索+取得」テクニックをマスターすれば、
顧客管理・商品リスト・在庫表・請求データなど、
どんなデータベース形式のシートも自在に扱えるようになります。
繰り返し使う業務ほど効果が大きく、
作業時間の削減とミス防止の両方が実現できます。
ぜひ、この記事で紹介した関数を活用して、
“探して隣を取る” 作業を完全自動化してみてください。