業務効率化

VLOOKUP関数で商品コードから単価・商品名を自動転記する|手入力とコピペをなくす

ExcelMate編集部7分

この記事の要点

  • 商品コードを入れるだけで商品名・単価をマスタから自動転記でき、手入力とコピペのミスがなくなる
  • 数式は =VLOOKUP(検索値, 範囲, 列番号, FALSE)。範囲は絶対参照($)で固定し、最後は必ずFALSE(完全一致)にする
  • #N/Aエラーはコードの表記ゆれか範囲の左端列ズレが主因。IFERRORで空欄に逃がすと表が崩れない

注文表や納品書に、商品名と単価を毎回手で打ち込んでいませんか。件数が増えるほど時間がかかり、単価の打ち間違いはそのまま請求ミスにつながります。

商品マスタさえ用意しておけば、この転記は VLOOKUP 関数 で自動化できます。注文表に商品コードを入れるだけで、商品名・単価が自動で埋まり、金額まで計算されます。実際の画面を見ながら進めましょう。

完成イメージ

A列に商品コードを入力すると、B列の商品名とC列の単価が商品マスタから自動で転記されます。あとは数量を入れれば、E列の金額(単価×数量)まで自動で出ます。

VLOOKUP関数で商品コードから商品名・単価を自動転記したExcel画面。B2セルに =VLOOKUP(A2, 商品マスタ!$A:$C, 2, FALSE) を入力し、A-101の商品名「コピー用紙 A4」が表示されている
B2 に入力した数式と、その転記結果(A-101 → コピー用紙 A4・¥480)

数式の意味

B2 セル(商品名)に入れているのは、次の数式です。

=VLOOKUP(A2, 商品マスタ!$A:$C, 2, FALSE)

VLOOKUP は「表の左端列からコードを探し、その行の指定した列を取り出す」関数で、4つの引数をこの順番で指定します。

  1. 検索値(A2)… 探したい値。ここでは入力した「商品コード」
  2. 範囲(商品マスタ!$A:$C)… 探しにいくマスタ表。左端のA列がコード列になっている必要があります
  3. 列番号(2)… 範囲の左から何列目を取り出すか。商品名はマスタの2列目なので 2
  4. 検索方法(FALSE)… 完全一致で探す指定。コードの転記では必ず FALSE

単価(C2)は、同じ数式の列番号だけを 3 に変えれば取り出せます(マスタの3列目が単価のため)。

=VLOOKUP(A2, 商品マスタ!$A:$C, 3, FALSE)

つまずきやすいポイント①:範囲は絶対参照の「$」で固定する

マスタの範囲 $A:$C に付いている $絶対参照です。これがないと、数式を下の行にコピーしたときに参照するマスタ範囲がズレてしまい、2行目以降が正しく引けません。検索値(A2)は行ごとに変わるので固定せず、マスタ範囲だけを $ で固定します。F4 キーで素早く付けられます。

つまずきやすいポイント②:最後は必ず「FALSE」

4つ目の引数を省略したり TRUE にすると、近似一致になって見当違いの単価を返すことがあります。商品コードや社員番号など「ぴったり一致してほしい」転記では、必ず FALSE(完全一致)を指定してください。

よくあるエラーと対処

  • #N/A が出る … 検索値がマスタに見つからないサインです。コードの表記ゆれ(全角半角・末尾の空白)か、範囲の左端列がコード列になっていないかを確認します。空欄のときに #N/A を出したくない場合は =IFERROR(VLOOKUP(...), "") で空欄に逃がすと表が崩れません。
  • 商品名は出るが単価がおかしい … 列番号の数え間違いです。列番号は「シート全体の列」ではなく「範囲の左端から数えた列」である点に注意します。
  • マスタを増やしたら引けなくなった … 範囲を $A$2:$C$50 のように行番号で区切っていると、増えた行が範囲外になります。列全体($A:$C)かテーブル参照にしておくと、追加に強くなります。

まとめ

商品マスタと VLOOKUP を一度組んでおけば、注文・納品・在庫の表は「コードを入れるだけ」で商品名・単価が埋まり、金額まで自動で出ます。私たちが実際にお手伝いしたケースでは、毎回20分かけていた単価転記が数分で終わり、単価ミスもほぼゼロになった例があります。

「マスタの作り方から相談したい」「VLOOKUPより一歩進めて、複数シートの転記をマクロで丸ごと自動化したい」という場合は、ExcelMate のチャット相談でそのまま聞いていただけます。

よくある質問

VLOOKUP関数の基本の書き方は?
=VLOOKUP(検索値, 範囲, 列番号, FALSE) の順に指定します。検索値=探したいコード、範囲=マスタ表、列番号=範囲の左から何列目を取り出すか、FALSE=完全一致で探す、という意味です。
VLOOKUPで#N/Aエラーが出るのはなぜ?
検索値がマスタに見つからないときに出ます。商品コードの表記ゆれ(全角半角・末尾の空白)、範囲の左端列が検索値の列になっていない、のどちらかが主因です。
最後の引数のFALSEとTRUEはどう違う?
FALSEは完全一致で探し、コードやIDの転記では必ずFALSEを使います。TRUE(近似一致)はマスタが昇順に並んでいる前提の別用途で、誤った値を返す事故が多いため通常は使いません。
数式を下にコピーすると参照がズレるのはなぜ?
マスタの範囲に絶対参照($)が付いていないためです。範囲(例 $A:$C)は$で固定し、検索値のセルは固定しません。F4キーで$を素早く付けられます。

監修・運営者

株式会社KOPS 代表取締役 馬込 浩

馬込 浩株式会社KOPS 代表取締役

業務システムの要件定義〜設計〜実装を一気通貫で手がけ、経営者として自社のバックオフィスも運営。Excel・VBA・Power Query/スプレッドシート自動化の実務経験にもとづき、ExcelMateの記事を監修しています。

運営者情報・監修者プロフィールを見る