1. ホーム
  2. ブログ
  3. VLOOKUP関数の使い方|列を挿入すると静かに間違う

VLOOKUP関数の使い方|列を挿入すると静かに間違う

この記事は 事務でよく使うExcel関数まとめ|目的から探せる一覧 の1本です。他の関数もまとめて見られます。

品番を入れたら品名と単価が自動で出る。この「表引き」を長く支えてきたのが VLOOKUP(ブイルックアップ) です。

いまは後継の XLOOKUP がありますが、Excel 2019以前では使えません。社内のパソコンが混在している会社では、まだVLOOKUPで書く必要があります。

この記事は、VLOOKUPしか使えない環境の方向けです。使い方と、必ず知っておくべき落とし穴を扱います。

まず、自分のExcelがどちらか確認する

空いているセルに =XL と打ってみてください。

  • 候補に XLOOKUP が出る → Microsoft 365 / Excel 2021以降。XLOOKUP関数の使い方 を読んでください。そちらのほうが安全です
  • 出ない → Excel 2019以前。この記事の内容で書きます
!

社内でバージョンが混在している場合は、VLOOKUPで書いてください

自分のパソコンで XLOOKUP が使えても、そのファイルを古いExcelで開くと
#NAME? というエラーになり、計算されません。

複数人で使うファイル・取引先に渡すファイルは、
一番古い環境に合わせるのが安全です。

この記事で作るもの

商品マスタから、品番で品名を引きます。

A1
ABC
1品番品名単価
2S-100杉板 12mm1,200
3H-200檜柱 105角3,800
4G-300合板 9mm900
マスタ
「マスタ」という別シートに置いておきます。
B2 =VLOOKUP($A2, マスタ!$A:$C, 2, FALSE)
ABCDE
1品番品名単価数量金額
2H-200檜柱 105角3,8002076,000
伝票
A2に品番を入れると、B2に品名が出ます。

VLOOKUPの形

=VLOOKUP(探す値, 探す範囲, 何列目を取るか, 検索方法)
  1. 探す値いま手元にある値。ここでは伝票のA2に入れた品番
  2. 探す範囲マスタの範囲。この範囲の一番左の列が「探しに行く列」になる
  3. 何列目を取るか範囲の左端を1として数えた番号。品名なら2
  4. 検索方法完全一致なら FALSE。必ず書いてください

XLOOKUPとの一番の違いは、3つ目が「列そのもの」ではなく「番号」だという点です。この番号が、後述する落とし穴の原因になります。

絶対に守るルール:探す値は範囲の左端

VLOOKUPは、指定した範囲の一番左の列しか探しません。

A1
ABC
1品番品名単価
2S-100杉板 12mm1,200
3H-200檜柱 105角3,800
4G-300合板 9mm900
マスタ
範囲を A:C としたとき、探しに行くのは黄色のA列だけです。

つまり 「品名から品番を逆に引く」ことはできません。品番が左にあるからです。

逆引きが必要なら、マスタの列順を入れ替えるか、別の方法を使います(INDEXとMATCHの使い方(近日公開) で扱います)。

列番号の数え方

シートの列記号ではなく、指定した範囲の左端から数えます。ここを間違える人が多いところです。

A1
ABC
1品番品名単価
2S-100杉板 12mm1,200
マスタ
範囲を A:C にした場合 → 品番=1、品名=2、単価=3 です。

範囲を B:C にした場合は、品名が1、単価が2になります。範囲の取り方で番号が変わる、という点を押さえてください。

最大の落とし穴:列を挿入すると静かに間違う

ここがVLOOKUPで一番怖いところです。

品名を取るために 2 と書いてありました。この状態で、マスタに「規格」という列を1つ挿入したとします。

A1
ABCD
1品番*規格*品名単価
2S-10012mm杉板1,200
3H-200105角檜柱3,800
4G-3009mm合板900
マスタ
列が1つ増え、品名は2列目から3列目に移動しました。

式に書いた 2 は、自動では変わりません。

A1 =VLOOKUP($A2, マスタ!$A:$D, 2, FALSE)
ABCDE
1品番品名単価数量金額
2H-200105角3,8002076,000
伝票
品名の欄に「105角」(規格)が入りました。エラーは出ていません。
×

エラーが出ないのが、一番の問題です

#N/A#REF! も出ません。それらしい値が普通に表示されます。

だから誰も気づかないまま、間違った品名の納品書が出続けます。
気づくのは、たいてい取引先から指摘されたときです。

XLOOKUPは列を番号ではなく列そのもので指定するため、これが起きません。XLOOKUPが使える環境なら乗り換えるべき理由が、これです。

VLOOKUPのまま安全に使うには

古い環境で使い続ける場合、次の3つで事故を減らせます。

  1. マスタの列を絶対に挿入しない、というルールにする

    項目を足したいときは、一番右に足す。これだけで列番号はズレません。社内で共有するマスタほど効きます。

  2. マスタを別シートに分け、シートを保護する

    「校閲」タブ →「シートの保護」で、誤って列を挿入されることを防げます。パスワードは付けなくても構いません。

  3. 式のそばに、何列目が何かをメモしておく

    マスタの見出し行のすぐ上か、伝票シートの端に「品名=2 / 単価=3」と書いておきます。次に触る人が気づけます。

より根本的に直すなら、列番号を固定値ではなく見出し名から自動で求める方法があります。INDEXとMATCHの使い方(近日公開) で扱います。

FALSE を省略してはいけません

4つ目の FALSE は「完全一致で探す」という指定です。省略すると近似一致になります。

×

FALSEを書き忘れると、違う行の値が返ることがあります

近似一致は「その値以下で、一番近いもの」を返す動きをします。
しかもマスタが昇順に並んでいることが前提です。

品番や社員番号のようなコードを探す用途では、まず使いません。
FALSE は必ず書いてください。

0 と書いても FALSE と同じ意味になります。短く書きたい場合はそちらでも構いません。

よくあるつまずき

×

#N/A と出る

マスタに無い値を探しています。

・品番に余分なスペースが入っている
・全角と半角が混ざっている(S-100S-100
・マスタ側が数値、伝票側が文字列になっている

スペースの直し方は TRIM関数の使い方 で扱っています。
未入力の行に #N/A を出したくない場合は IFERROR関数の使い方 を参照してください。

×

下にコピーしたら、途中から結果がおかしくなった

範囲を $ で固定していません。

マスタ!A:C と書くと、下にコピーしたときに A2:C4 のようにズレていきます。
マスタ!$A:$C のように $ を付けて固定してください。

セルを選んで F4 キーを押すと切り替わります。

今日やってみること

  1. 自分のExcelで XLOOKUP が使えるか確認する

    =XL と打って候補に出るかどうか。使えるなら、そちらを先に検討してください。

  2. いま使っているVLOOKUPの式を1つ開く

    数式バーで、3つ目の数字と4つ目の FALSE を確認します。

  3. FALSE が抜けていないか確かめる

    抜けていたら追加してください。結果が変わる場合、これまで間違った値を拾っていた可能性があります。

  4. マスタの列順をメモに残す

    「品名=2 / 単価=3」と書いておくだけで、次に列を触る人が気づけます。

3つ目が特に大事です。FALSE を足して結果が変わったら、過去の資料も確認してください。

次に読むとよい記事


「古いExcelのままでいいのか、入れ替えるべきなのか」という判断も含めてご相談いただけます。現状のヒアリングと課題整理は無料です。

#Excel#VLOOKUP#表引き

この記事について

SUPRAXは、林業・製造・運送の現場経験をもとに、中小企業の業務改善・AI活用・GISの支援を行っています。 記事の内容について「うちの場合はどうか」を聞きたい方は、無料相談をご利用ください。

無料で相談してみる

あわせて読みたい

記事一覧へ戻る