ピアのパソコン学習ガイドパソコン・Excel・AI・事務スキルの学び方と、教室の選び方
Excel関数

VLOOKUP関数の使い方|#N/Aの直し方まで図でわかる【サンプル付き】

ピアのパソコン学習ガイド 編集部2026年11月7日 更新

書き方はこれだけ

=VLOOKUP(探す値, 表の範囲, 何列目, FALSE)

商品コードから商品名や単価を、社員番号から部署を、のように「表の左端の列で探して、同じ行の右側の値を持ってくる」関数です。4つ目は、ほとんどの場合 FALSE(完全に一致するものだけ)でOKです。

VLOOKUPで商品コードB-202から商品名を引く図 B2 fx =VLOOKUP(A2,$A$8:$C$12,2,FALSE) A B C 1 2 3 4 5 6 7 8 9 10 11 12 商品コード 商品名 単価 B-202 付箋(75mm) 180 【商品一覧】 商品コード 商品名 単価 A-101 ボールペン(黒) 110 A-102 ボールペン(赤) 110 B-201 クリアファイル 30 B-202 付箋(75mm) 180 C-301 ホッチキス 680 探す値 2列目を持ってくる 表の範囲
B2に入れた式。A2のB-202を、商品一覧(A8:C12)の左端の列で探し、見つかった行の2列目(商品名)を持ってきます。単価がほしいときは、3つ目を3にするだけです。

この図の表をExcelファイルでダウンロード(問題と答えのシートつき)

4つの引数の意味

引数入れるもの図の例
探す値探したいコードや番号が入ったセルA2
表の範囲探す相手の表。探す列が左端になるように選び、$を付けて固定する$A$8:$C$12
何列目範囲の左端を1列目として、持ってきたい列が何列目か2(商品名)/3(単価)
FALSE / TRUEFALSE=完全に一致するものだけ。TRUE=近い値(送料表などの区分け)FALSE

つまずきの9割は、2つ目と3つ目です。「範囲の左端に探す列が来ているか」と「列は範囲の左端から数えているか(シートのA列から数えるのではない)」の2つを、まず確かめてください。

入れ方の手順と、下へコピーするときの注意

  1. 結果を出したいセル(図ではB2)を選んで、=VLOOKUP( と入力関数名は小文字で打っても大丈夫です。途中で出てくる候補から選んでもかまいません。
  2. 探す値のセル(A2)をクリックして「,」直接 A2 と打ってもOKです。
  3. 表の範囲(A8:C12)をドラッグして、すぐ F4 キーを押す$A$8:$C$12 に変わります。これを忘れると、次の手順で式がずれます。ノートパソコンでF4が効かないときは Fn を押しながら F4 です。
  4. 「,2,FALSE)」と入れて Enter2は「範囲の2列目」です。
  5. セルの右下の■をドラッグして、下の行へコピー同じ式が、探す値だけ A3、A4…と変わりながらコピーされます。

$を付け忘れると、下の行で #N/A になる

$なし(失敗)

$を付けずに下へコピーすると範囲がずれて#N/Aになる図 B4 fx =VLOOKUP(A4,A10:C14,2,FALSE) A B C 1 2 3 4 5 6 7 8 9 10 11 12 13 14 商品コード 商品名 単価 B-202 付箋(75mm) C-301 ホッチキス A-101 #N/A 180 680 #N/A 【商品一覧】 商品コード 商品名 単価 A-101 ボールペン(黒) 110 A-102 ボールペン(赤) 110 B-201 クリアファイル 30 B-202 付箋(75mm) 180 C-301 ホッチキス 680 2行下にずれた範囲
下へコピーすると範囲もいっしょに下へずれ、B4ではA10:C14を探すことに。A-101(8行目)が範囲から外れて #N/A になります。

$あり(正解)

$で範囲を固定すると正しく引ける図 B4 fx =VLOOKUP(A4,$A$8:$C$12,2,FALSE) A B C 1 2 3 4 5 6 7 8 9 10 11 12 13 14 商品コード 商品名 単価 B-202 付箋(75mm) C-301 ホッチキス A-101 ボールペン(黒) 180 680 110 【商品一覧】 商品コード 商品名 単価 A-101 ボールペン(黒) 110 A-102 ボールペン(赤) 110 B-201 クリアファイル 30 B-202 付箋(75mm) 180 C-301 ホッチキス 680 範囲は動かない
$A$8:$C$12と固定しておけば、どの行にコピーしても同じ商品一覧を探します。

上の行は正しく出ているのに、下のほうだけ #N/A になる、というときは、ほぼこれが原因です。式の入ったセルを選んで、範囲に $ が付いているかを見てください。

#N/Aが出るときの直し方

#N/Aは「探したけれど見つからなかった」という意味です。本当に表にない場合のほかに、目で見ると同じなのに、Excelには別の値に見えていることがよくあります。原因の多い順に並べました。

1数字と文字が混ざっている

探す値1001(数値・右寄せ)
≠
表の左端の値1001(文字列・左寄せ・緑の三角)

社員番号や商品番号がほかのシステムから貼り付けたデータだと、見た目は同じ「1001」でも、片方が文字として入っていることがあります。セルの左上に緑の三角が出ていたり、数字なのに左に寄っていたりしたら、これです。

直し方表の左端の列を選んで、出てくる「!」から「数値に変換する」を選びます。式の側で直すなら、探す値を A2&""(文字にそろえる)や A2*1(数値にそろえる)にします。

2全角と半角がちがう

探す値A-101(全角)
≠
表の左端の値A-101(半角)

手で入力したコードと、システムから出したコードで、英字やハイフンの全角・半角がちがうことがあります。画面ではほとんど見分けがつきません。

直し方どちらかにそろえます。半角にそろえるなら =ASC(A2) で作った列を使うか、探す値を ASC(A2) にします。

3見えない空白が入っている

探す値B-202␣(末尾に空白)
≠
表の左端の値B-202

コピーしたデータの末尾や先頭に、空白が1文字だけ入っていることがあります。見た目ではまず分かりません。

直し方=TRIM(A2) で前後の空白を消した値で探します。探す値を TRIM(A2) にしてもOKです。

4探す列が範囲の左端にない

探す値商品名で探したい
≠
表の左端の値範囲の左端は商品コード

VLOOKUPは、範囲のいちばん左の列でしか探しません。商品名から商品コードを引くように、左側の値を持ってくることもできません。

直し方範囲を、探す列から始まるように選び直します。左側の値を持ってきたいときは、XLOOKUP か INDEX と MATCH を使います。

5本当に表にない・範囲が足りない

探す値C-302
≠
表の左端の値(表に行がない)

新しく追加した商品が範囲の外にある、または本当に未登録、というケースです。

直し方範囲を最後の行まで含むように広げます。増えていく表なら、列ごと $A:$C と指定するか、表を「テーブル」にしておくと自動で広がります。

#N/A以外のエラーと、おかしな結果

こうなったら原因と直し方
#REF!3つ目の「何列目」が、範囲の列数より大きい。範囲が3列なら、指定できるのは1〜3です。範囲を広げるか、数字を直します。
#VALUE!3つ目が0以下になっている。1以上の数にします。
#NAME?関数名のつづり間違い(VLOOKUPの綴り、全角で入力など)。半角で入れ直します。
0 が表示される見つかった行の、持ってくる列のセルが空っぽ。元の表を確かめます。
違う行の値が出る4つ目を省略しているか TRUE になっている。完全一致で探すなら FALSE を入れます。
列を挿入したら結果がずれた「何列目」は数字で固定されているので、表の途中に列を足すとずれます。表の形が変わるなら、XLOOKUP が向いています。

仕事での使いどころ

場面探す値表(マスタ)持ってくるもの
見積書・請求書商品コード商品一覧商品名・単価
勤怠・給与の集計社員番号社員名簿氏名・部署・時給
売上の集計取引先コード取引先一覧会社名・担当者
在庫の確認JANコード・品番在庫表在庫数・置き場所
名簿の照合会員番号別の名簿あるか・ないか(#N/Aなら未登録)

共通しているのは、「番号やコードは毎回打つけれど、名前や金額は表から持ってきたい」場面です。手で写していると、写し間違いと、マスタを直したときの直し漏れが必ず出ます。VLOOKUPにしておけば、マスタを1か所直すだけで、すべての書類に反映されます。

TRUE(近似一致)の使い方:送料表・手当表

TRUE(近似一致)で送料表から送料を引く図 B2 fx =VLOOKUP(A2,$A$6:$B$9,2,TRUE) A B C 1 2 3 4 5 6 7 8 9 購入金額 送料 4,200 500 【送料表】 この金額から 送料 0 800 3,000 500 5,000 300 10,000 0 4,200以下で最大→3,000の行
購入金額 4,200円は、送料表の「この金額から」の列で4,200以下のいちばん大きい値(3,000)の行に当たり、送料 500円 を持ってきます。

4つ目を TRUE にすると、「ぴったり同じ値」ではなく「その値以下でいちばん近い値」の行を探します。送料表、通勤手当の距離区分、売上に応じた評価ランク、年齢区分など、区切りで分ける表で使います。

使うときの決まりは2つです。表の左端を小さい順(昇順)に並べることと、いちばん上を0など一番小さい値にしておくこと。順番がばらばらだと、エラーにならずに違う値を返すので気づきにくいです。

よく一緒に使うもの

見つからないときに #N/A ではなく「未登録」と出す(IFERROR)

IFERRORで見つからないときに未登録と出す図 B3 fx =IFERROR(VLOOKUP(A3,商品一覧!$A:$C,2,FALSE),"未登録") A B C D 1 2 3 商品コード 商品名 単価 B-202 付箋(75mm) D-999 未登録
VLOOKUPを IFERROR( ,"未登録") で包むと、エラーのときだけ「未登録」と表示されます。空白にしたいときは "" にします。

書類として印刷するなら、#N/A が並ぶより見やすくなります。ただし、本当は直すべき入力ミスまで隠れてしまうので、表が完成してから最後に付けるのがおすすめです。

商品一覧を別のシートに置く

別のシートにある商品一覧からVLOOKUPで引く図 B2 fx =VLOOKUP(A2,商品一覧!$A$2:$C$100,2,FALSE) A B C D 1 2 3 4 商品コード 商品名 単価 B-202 付箋(75mm) 180 A-101 ボールペン(黒) 110 見積 商品一覧
範囲を選ぶときに下の「商品一覧」シートに切り替えてドラッグすると、商品一覧!$A$2:$C$100のように、シート名つきで入ります。

マスタは別シートに分けておくのが、職場ではいちばん多い形です。商品が増えていく表なら、範囲を少し下まで広めにとっておくか、列ごと 商品一覧!$A:$C と指定しておくと、追加のたびに式を直さずにすみます。

条件が2つあるとき(支店と月など)

支店と月をつないだ補助列を作る図 A2 fx =B2&C2 A B C D 1 2 3 4 5 キー 支店 月 売上 新宿11月 新宿 11月 820,000 新宿12月 新宿 12月 910,000 立川11月 立川 11月 640,000 ↑ 補助列
表の左端に、支店と月を & でつないだ「補助列」を作ります。探す値も同じように ="新宿"&"12月" とつなげて探します。

VLOOKUPは1つの列でしか探せないので、条件が2つなら、2つをつないだ列を左端に作るのが確実です。XLOOKUPが使える環境なら、補助列なしでも書けます。

XLOOKUPとどちらを使う?

VLOOKUPXLOOKUP
使えるExcelすべてのバージョンMicrosoft 365、Excel 2021・2024、Web版(2019以前は使えない)
探す列範囲の左端だけどの列でもよい(左側の値も持ってこられる)
持ってくる列の指定「何列目」の数字列そのものを選ぶ(列を挿入してもずれない)
見つからないとき#N/A(IFERRORで包む)4つ目に「未登録」などを直接書ける
Googleスプレッドシート使える使える

自分だけで使うファイルで、Microsoft 365を使っているなら、XLOOKUPのほうが間違えにくいです。ただ、取引先や社内の古いExcelでも開くファイルなら、どこでも動くVLOOKUPのほうが安全です。XLOOKUPを2019以前のExcelで開くと、#NAME? になります。くわしくはXLOOKUP関数の使い方で。

サンプルファイルで試す

このページの表を、そのままExcelファイルにしました。「問題」のシートの黄色いセルに式を入れて、「答え」のシートと見比べてください。Googleスプレッドシートにアップロードしても使えます。

vlookup.xlsx をダウンロード(無料・登録なし)

よくある質問

4つ目の FALSE は省略してもいいですか?

省略すると TRUE(近似一致)として動き、表の並び順によっては違う行の値を返します。エラーにならないので気づきにくいのがやっかいです。コードや番号で探すときは、必ず FALSE を入れてください。

同じコードが2行あるときはどうなりますか?

上から探して、最初に見つかった行の値を返します。2つ目以降は取れません。重複していないかは、COUNTIF関数で数えると確かめられます。

大文字と小文字は区別されますか?

区別されません。「a-101」で探しても「A-101」の行が見つかります。

左側の列の値を持ってくることはできますか?

VLOOKUPではできません。範囲の左端より左の列は使えないので、XLOOKUP か、INDEX と MATCH の組み合わせを使います。

Googleスプレッドシートでも使えますか?

はい。同じ書き方で使えます。別のシートを参照するときも、シート名!範囲 の形は同じです。

式が長くなって分かりにくいです。

範囲に名前を付けておくと読みやすくなります。範囲を選んで、左上の名前ボックスに「商品一覧」と入れておけば、=VLOOKUP(A2,商品一覧,2,FALSE) と書けます。

一緒に覚えたい関数

このページについて

操作の説明は Microsoft 365 の日本語版Excel(Windows)に合わせています。図はこのサイトで作ったもので、表の会社名・商品名は架空です。運営者情報