キーから値を抽出 VLOOKUP

商品番号から商品名や価格を抽出するときによく利用されるのがVLOOKUP関数です。

商品一覧があり、商品番号を入力すると商品名が自動で表示されるようにします。価格も自動で表示します。(図はexcel2013)

vlookup

VLOOKUP関数

セルの値を縦方向に検索し一致するセルの同一の行の値を返します。

VLOOKUP(検索値, 範囲, 列番号, [検索の型])

セルB2の数式は、セルA2の値とG列の商品番号の値を比較し一致したセルと同じ行にあるH列の商品名を返します。

vlookup_1

検索値が商品番号、範囲が商品一覧、列番号が勝因一覧の何列目科の数値、検索の型は0(ゼロ)。

VLOOKUP関数の検索値は探したい商品を特定できるものです。

範囲の設定の仕方は少しルールがあります。検索値で指定した値は範囲の一番左の列から探されます。もし、商品名のバナナから120という値を得たいなら範囲はH列から始めなくてはいけません。範囲の左端に探したい値があるようにします。1行目の見出しは範囲に含める必要はありません。また、オートフィルでコピーすることが多いので絶対参照にすることが多いです。

列番号は範囲の左端列を1として何列目のセルの値を取得するかを指定します。

[検索の型]は、省略可能です。完全一致の場合は、0(ゼロ)またはfalseを指定します。trueを設定した場合は検索値未満の最大の値と一致します。(ただし範囲の検索列(左端列は)昇順で並べ替えておく必要があります。)

A列に商品番号を入れるとVLOOKUP関数でB列に自動商品名が入るようになりましたので、範囲を絶対参照にして、セルB10までオートフィルでコピーします。

vlookup_2

セルB2ではうまく答えが出た数式ですがコピーするとエラーが表示されました。これは関数を実行したが該当する答えがないという表示です。今回はセルA3以降の値が入っていませんのでエラーが発生しました。セルA3に商品番号を入力すればエラーは表示されません。

しかし、請求書や見積書などで使う場合エラー表示は格好が悪いです。

いくつか解決方法があります。IF関数を使ってA列が空白かどうかの場合分けをします。空白はダブルクォテーションとダブルクォテーションを続けて入力します。

vlookup_3

セルB3に『もし、セルA3の値が空白だったら、空白を表示、そうでない場合はVLOOKUP関数で商品名を表示』という数式を入力します。

=IF(A3=””,””,VLOOKUP(A3,$G$1:I8,2,0))

これで空白の場合でもエラー表示されなくなりました。この場合は存在しない商品番号を入力した場合同じエラーが表示されます。

vlookup_4

範囲に存在しない商品番号の500を入力してみました。500番の商品はありませんのでエラー表示されます。商品が存在しないのでエラーが正しいのですが、好ましくない場合もあります。知らない人が数式の入っているエラー表示列を消してしまうかもしれません。

ISERROR(テストの対象)かISNA(テストの対象)をつかって(テストの対象)で#N/Aが発生しているかどうかを調べます。エラーが発生していればtrueを返します。

では、セルB3に『セルA2の値でVLOOKUP関数を実施してエラーが発生していれば空白を表示、エラーが発生していなければセルA2の値でVLOOKUP関数を実施する』という数式を入力します。下線部は同じことなので数式に同じものが出てきます。

=IF(ISERROR(VLOOKUP(A3,$G$1:I8,2,0)),””,VLOOKUP(A3,$G$1:I8,2,0))

vlookup_5

これで空白の場合も存在しない商品番号でもエラー表示されなくなりました。

また、Excel2007からIFERROR 関数が使えます。

IFERROR 関数

数式がエラーの時は指定した値を表示し、エラーでないときは数式の結果を返す。

IFERROR(値, エラーの場合の値)

今回はVLOOKUP関数がエラーを返したら空白を返す式にします。

=IFERROR(VLOOKUP(A4,$G$1:I9,2,0),””)

vlookup_6

IFERROR関数の方が数式も見やすく、VLOOKUP関数の修正時も1か所でいいので非常に便利です。

セルB5では、先ほどのセルの値が空白なら空白というIF関数と組み合わせて、『もし、セルA5の値が空白ならば空白を表示、空白でないならセルA5の値でVLOOKUP関数を実施を実施して、エラーだったら”商品番号が違います”と表示する』式を入力してみます。

=IF(A5=””,””,IFERROR(VLOOKUP(A5,$G$1:$I$7,3,0),”商品番号が違います。”))

セルA5に何も値が入力されていない場合はセルB5も何も表示されません。セルA5に範囲にない商品番号が入力されたら”商品番号が違います。”と表示され、正しい商品番号(範囲にある番号)が入力されたら、価格を返します。

vlookup_7

 

コメントを残す

メールアドレスが公開されることはありません。