この記事でわかること
- VLOOKUP関数の構文と4つの引数(検索値・範囲・列番号・検索の型)の意味
- 完全一致(FALSE)と近似一致(TRUE)の違いと使い分け
- IF関数・IFERROR関数と組み合わせた条件表示とエラー対策
- 複数条件で検索する3つの方法(結合キー/INDEX・MATCH/FILTER関数)
Excelで「表からデータを探してきて自動で表示したい」というとき、真っ先に候補にあがるのがVLOOKUP関数です。商品コードから商品名を引く、社員番号から所属部署を引くといった検索・照合の作業は、経理・総務・営業事務などあらゆる現場で発生します。VLOOKUPを使えるようになると、こうした作業を手作業のコピー&ペーストから解放し、表側のデータが更新されれば結果も自動で追随する仕組みに変えられます。
本記事では、VLOOKUP関数の基本構文と4つの引数の意味を、実際のセル番地・数式・結果を示しながら解説します。あわせて、IF関数と組み合わせた条件表示、複数の条件で検索したいときの3つの代替手法、そして#N/Aエラーが出たときの対処法まで、現場でそのまま使える形でまとめました。
一方で、VLOOKUPは万能ではありません。列を1つ挿入しただけで参照がずれたり、検索値の表記が少し違うだけで一致しなくなったりと、便利な反面つまずきやすいポイントも多い関数です。記事の後半では、VLOOKUPを日常的に使う中で実際に起こりやすい限界についても触れています。

VLOOKUP関数の基本:構文と4つの引数
VLOOKUPは「Vertical Lookup(垂直方向の検索)」の略で、指定した検索値を表の一番左の列で探し、見つかった行から指定した列番号のデータを取り出す関数です。まずは基本構文と、各引数が何を指しているのかを確認します。
構文: =VLOOKUP(検索値, 範囲, 列番号, [検索の型])
以下の表(A1:C7)を使って、各引数の意味を具体的に説明します。
| A列 | B列 | C列 | |
|
1 |
商品コード | 商品名 | 単価 |
| 2 | P001 | ノートPC | 98,000 |
| 3 | P002 | マウス | 1,500 |
| 4 | P003 | キーボード | 3,200 |
| 5 | P004 | モニター | 25,000 |
| 6 | P005 | USBメモリ | 980 |
| 7 | P006 | ヘッドセット | 4,500 |
検索値
表の中から探し出したい値そのものです。例えばG2セルに「P002」と入力しておき、この値を検索値として指定します。
例:G2セルに「P002」と入力し、VLOOKUPの第1引数に「G2」を指定すると、A列(商品コード列)の中から「P002」が探し出されます。

範囲
検索値を探す対象となるセル範囲です。検索値が含まれる列(この場合は商品コード=A列)が範囲の一番左(1列目)に来るように指定します。
例:サンプル表の場合、範囲は「A2:C7」となります。A列(商品コード)が範囲の1列目、B列(商品名)が2列目、C列(単価)が3列目にあたります。
| 「=VLOOKUP(G1,A2:C7,2,FALSE())」 |
列番号
範囲の中で、実際に取り出したい値が何列目にあるかを指定します。検索値の列自体は必ず1列目になるため、2列目以降の中から取得したい列を選びます。
例:商品名(B列)を取り出したい場合は列番号「2」、単価(C列)を取り出したい場合は列番号「3」を指定します。
| 「=VLOOKUP(G1,A2:C7,2,FALSE())」 |
検索の型(完全一致・近似一致)
最後の引数は、検索値と完全に一致するものだけを探すか、近い値でも許容するかを指定します。FALSE(または0)を指定すると完全一致、TRUE(または1、省略)を指定すると近似一致になります。実務で使うVLOOKUPのほとんどはFALSE(完全一致)です。
例:G2セルに「P002」と入力し、=VLOOKUP(G2,A2:C7,2,FALSE) と入力すると、G4セルには「マウス」が表示されます。

単価を取得したい場合は列番号を3に変えてG5セルに =VLOOKUP(G2,A2:C7,3,FALSE) とすると「1,500」が返ります。

なお、近似一致(TRUE)は「検索値以下で最大の値」を探す動作になるため、点数から評価ランクを判定する、といった段階的な区分がある表で使われます。ただしこの場合、範囲の1列目は必ず昇順に並んでいる必要があります。
例:A2:B5に「0=D」「60=C」「80=B」「90=A」という評価表があり、E2セルに得点「75」を入力して =VLOOKUP(E2,A2:B5,2,TRUE) と入力すると、75以下で最大の値である「60」の行が探し当てられ、結果として「C」が返ります。

VLOOKUPの活用例(1)条件表示:IF関数との組み合わせ
VLOOKUPはIF関数と組み合わせることで、取得した値に応じて表示を切り替えることができます。代表的なのが在庫管理で「在庫数が0のときだけ『在庫なし』と表示する」ケースです。
例:A2:D7に商品コード・商品名・単価・在庫数の表があり、G2セルに商品コードを入力したうえで =IF(VLOOKUP(G2,A2:D7,4,FALSE)=0,"在庫なし",VLOOKUP(G2,A2:D7,4,FALSE)) と入力すると、在庫数が0であれば「在庫なし」、それ以外であれば実際の在庫数(例:「12」)がそのまま表示されます。

VLOOKUPの活用例(2)複数条件での検索
VLOOKUPは検索値を1つしか指定できないため、「商品コードと発注日の両方が一致する行を探したい」といった複数条件の検索は、そのままでは行えません。この場合の対処法として、次の3つの方法があります。
方法1:結合コードを作成したうえでVLOOKUP関数を使用
補助列(ヘルパーカラム)を1列追加し、複数の条件を「&」で結合した文字列を作ったうえで、その結合済みの値を検索値としてVLOOKUPを使う方法です。
例:A列に商品コード、B列に発注日がある表で、D列に補助列として =A2&B2 を入力し「P0022024/07/01」のような結合コードを作成します。検索側でも同様に「F2&G2」で結合値を作っておき、=VLOOKUP(F2&G2,D2:D7,1,FALSE) のように結合コードどうしを照合します。

方法2:INDEX関数とMATCH関数を使用
INDEX関数とMATCH関数を組み合わせると、補助列を追加せずに複数条件の検索が可能になります。MATCH関数で複数条件を掛け合わせて行位置を特定し、INDEX関数でその行の値を取り出します。
例:A列に商品コード、B列に発注日、C列に単価がある表で、検索したい商品コードをE2、発注日をF2に入力し、=INDEX(C2:C7,MATCH(1,(A2:A7=E2)*(B2:B7=F2),0)) という配列数式(Microsoft 365以外ではCtrl+Shift+Enterで確定)を入力すると、商品コードと発注日の両方が一致する行の単価が返ります。

方法3:FILTER関数を使用
Excel 2021以降(Microsoft 365含む)で使えるFILTER関数を使うと、複数条件をAND条件でつなぐだけで該当行を抽出できます。
例:A列に商品コード、B列に発注日、C列に単価がある表で、=FILTER(C2:C7,(A2:A7=E2)*(B2:B7=F2)) と入力すると、商品コードと発注日の両方が一致する行の単価が、スピル機能によって自動的に表示されます。

VLOOKUPの活用例(3)「該当なし」への対応:#N/Aエラーの回避
VLOOKUPで検索値が範囲内に見つからない場合、結果は「#N/A」というエラー値になります。もっとも多い原因は、検索値が指定した範囲の中に存在しないことです。
例:サンプル表(A2:C7)に対して、E2セルに「P007」と入力した場合、表にはP001〜P006までしか登録されていないため、=VLOOKUP(E7,A2:C7,2,FALSE) は「#N/A」を返します。

この#N/Aエラーは、IFERROR関数で包むことで任意の文字列に置き換えられます。
例:先ほどの式をIFERRORで囲み、=IFERROR(VLOOKUP(E7,A2:C7,2,FALSE),"見つかりません") とすると、E2セルの「P007」が表に存在しない場合でも、エラー値の代わりに「見つかりません」という文字列が表示されます。

なお、#N/Aエラーは検索値そのものが表に存在しない場合だけでなく、表記のわずかな違いによっても発生します。E2セルに全角で「P002」と入力した場合、範囲A2:C7には半角の「P002」しか登録されていないため、Excelはこれを別の文字列とみなし、=VLOOKUP(E2,A2:C7,2,FALSE) は一致するものが見つからず「#N/A」を返します。E2セルの入力を半角の「P002」に修正すると、今度は表の値と完全に一致するため、正しく「マウス」が返ります。全角・半角やスペースの有無といった表記ゆれは、目視では気づきにくいVLOOKUPの失敗原因の一つです。

|
|
<IT現場の管理業務を標準化!> Excelでの進捗・スケジュール管理に手間取っていませんか?
ツールを開発・提供するプロだからこそ知る「現場のリアルなノウハウ」。WBSを活用した課題対応と計画立案をハンズオンで習得!
現場を知るPMが伴走!OBPM Neoのプロジェクト管理研修
|
現場でVLOOKUPを使う際によくある限界・落とし穴
VLOOKUPは1つの表の中で完結する検索であれば非常に強力ですが、実際の業務では次のような限界にぶつかることが少なくありません。
複数のExcelファイルをまたいだ突合の限界
商品マスタと発注データが別々のブックで管理されている場合、VLOOKUPで他ブックを参照する数式を組むことは技術的には可能ですが、参照先のファイル名やシート名を変更・移動しただけで参照が切れてしまいます。ファイルが部署ごと・担当者ごとに分散して管理されていると、どのファイルが最新版かを都度確認しながら手作業で紐づける運用になりがちです。
列の挿入・並び替えによる参照ズレ
VLOOKUPは列番号(第3引数)で取得列を指定するため、範囲の途中に列を1つ挿入したり、列の並び順を入れ替えたりすると、意図しない列の値を取得してしまいます。本人は数式を変更したつもりがなくても、表側の構造が変わっただけで結果が誤ったものになるリスクがあります。
表記ゆれによる検索漏れ
先述の通り、全角・半角、スペースの有無、大文字・小文字といった表記の違いだけで検索が失敗します。入力者ごとに表記のクセが異なる現場では、この種のエラーが散発的に発生しやすく、原因の特定にも時間がかかります。
大量データでの動作の重さ
数千〜数万行規模の表に対して、多数のVLOOKUP(特に複数条件のためのINDEX・MATCH配列数式)を設定すると、シートを開くたびの再計算に時間がかかるようになり、日々の作業効率を落とす原因になります。
複雑な数式の属人化
結合コード方式やINDEX・MATCH、FILTER関数を使いこなせるかどうかはメンバーのExcelスキルに大きく依存します。数式を組んだ担当者が異動・退職すると、残されたメンバーが数式の意図を読み解けず、修正も検証もできないまま「触れないシート」として放置されるケースも珍しくありません。
まとめ
VLOOKUP関数は、検索値・範囲・列番号・検索の型という4つの引数を理解すれば、商品コードから商品名や単価を引くといった日常的な検索作業を自動化できる便利な関数です。IF関数と組み合わせれば条件に応じた表示切り替えができ、IFERROR関数と組み合わせればエラー時の表示も制御できます。
さらに複数条件で検索したい場合は、結合コードを作る方法、INDEX関数とMATCH関数を組み合わせる方法、Excel 2021以降であればFILTER関数を使う方法という3つの選択肢があります。それぞれ数式の難易度が異なるため、自分やチームのスキルレベルに合わせて選ぶとよいでしょう。
一方で、ファイルが分散した状態での突合や、列の挿入による参照ズレ、表記ゆれ、大量データでの重さ、数式の属人化といった限界は、VLOOKUPという関数単体の工夫だけでは解決しきれない部分でもあります。関数の知識を身につけることと合わせて、チームとしてどう運用ルールを標準化していくかも重要なテーマです。
![]() |
現場のスキル底上げ・業務標準化を実現:実務で使える「OBPM Neoの 研修サービス」 OBPM Neoでは、プロジェクト管理の標準化や現場で役立つ実践スキルを体系的に学べる研修プログラムを提供しています。
\すぐに実務で活かせる「使える」研修としてPM経験者が伴走!/
OBPM Neoの「PM経験者が指導する研修サービス」の詳細はこちら |
- カテゴリ:

