Excelの作業の中でも使用頻度の高いVLOOKUP関数ですが、使いこなせるようになると便利な反面、エラーに遭遇する率も高めな関数です。
作業を効率化したいから使ったのにエラーが出て余計に作業が進まない!なんて経験をしてきましたが、なんとか使いこなせるようになったかなと思えるようになってきたので、まとめてみました。
VLOOKUP関数とは?
VLOOKUPの読み方は「ブイルックアップ」です。
「V」は「Vertical(バーティカル)」の略で「垂直」、「Look up」は「調べる」という意味があります。つまりVLOOKUPは「垂直方向に調べる(検索する)」関数になります。
あらかじめ用意しておいたリストの中から目的のものを探し、自動で表示してくれます。
これだけではわかりづらいので、具体的な活用方法をご紹介します。
VLOOKUP関数の使い方
VLOOKUP関数の使用例です。
アパレルショップの売上表を作るとします。商品の価格は決まっているので、あらかじめ商品の価格リストを作成しておきます。
今回は見やすいように同じシートにリストを作りましたが別シートに作成することもできます。
売上表を作成するときに日付を入力し、商品管理番号を入力するだけで商品名と価格が自動で表示されます。
このようにVLOOKUP関数を使うと、最低限の項目を入力するだけで自動的に商品価格リストから必要な情報を取得することができます。自動で必要な情報を取得してくれることで作業効率が上がりミスを減らすことがきます。
では、どのようにVLOOKUP関数を使っているのか見ていきましょう。
VLOOKUP関数の書式
VLOOKUP関数はこのように書きます。
VLOOKUP関数は検索結果を自動入力したいセルに書きます。今回の例の場合はD列の商品名とE列の価格を入力したいセルにVLOOKUP関数を書きました。まずは商品名から自動に表示されるようにしますので「D4」に関数を書いていきます。
検索する値を入力するセル
商品管理番号を手動で入力し、商品名と価格を商品価格リストから引っ張ってきたいので、検索する値を入力するセルは「C4」になります。
検索範囲
検索する範囲を指定します。今回は商品価格リストのあるG4~I9を検索範囲にします。
範囲の指定はオートフィルでセルをコピーしても検索範囲がずれないよう絶対参照にします。列番号のG、Iと行番号の4、9の前に「$」を付け「$G$4:$I$9」とします。
検索範囲に指定した一番左の列だけが検索されます。つまり「商品名、商品管理番号、価格」の順で並んだ商品価格リストでG4~I9を検索範囲にすると商品名の中から商品管理番号を探してしまいます。
表示する列の指定
検索した値がヒットした場合、いくつ横にズレるかを指定します。検索範囲の一番左の列が1、その右隣が2、その右隣が3…となります。
例の場合、商品管理番号が1、商品名が2、価格が3となります。商品名を表示させたいので「2」を書きます。
検索の型
VLOOKUP関数には「TRUE」と「FALSE」の2種類の検索方法があります。
■TRUE
検索する値と完全に一致する値が見つからない場合、検索する値未満の最大値を取得します。
「TRUE」は省略することが可能です。「TRUE」の代わりに「1」と書いてもOKです。
=VLOOKUP(C4, $G$4:$I$9, 2)
=VLOOKUP(C4, $G$4:$I$9, 2, 1)
検索範囲に指定した一番左の列を昇順に並べ替えておく必要があります。
具体的な活用例は後述します。
■FALSE
検索する値と完全に一致する値を取得します。完全一致する値が見つからない場合、エラー「#N/A」が表示されます。
「FALSE」の代わりに「0」と書いてもOKです。
=VLOOKUP(C4, $G$4:$I$9, 2, 0)
「FALSE」の場合は、ワイルドカードを使った検索ができます。
今回は売上表なので入力した商品管理番号と完全に一致した商品名を取得してもらわないと困りますので「FALSE」にします。
まとめると、このようになります。
=VLOOKUP(C4, $G$4:$I$9, 2, FALSE)
この式を「D4」セルに入力します。
「C4」に手動で商品管理番号を入力すると「D4」セルに商品名が表示されるようになります。
同じように価格をVLOOKUP関数で取得する場合は、表示する列の指定を「2」から「3」に変更するだけです。
=VLOOKUP(C4, $G$4:$I$9, 3, FALSE)
検索の型「TRUE」の活用例
前述の通りVLOOKUP関数には検索の型が2種類あります。
「FALSE」は検索する値を完全に一致した値を探します。「TRUE」は少しややこしく、一致する値がなかった場合は検索する値未満の最大値を取得します。
下記の例は株式取引の収支表です。証券会社の手数料表をあらかじめ作成しておきました。
証券会社の手数料は取引額が10万円まで95円、20万円まで105円、50万円まで260円…といった感じになっています。
「E4」に「=VLOOKUP(D4,$G$4:$H$9,2,TRUE)」という式を入れています。「D4」に取引額を手動で入力すると、「E4」に手数料が自動表示されます。
156,000円の取引額だと一致する値が検索範囲にありません。「FALSE」だとエラーになりますが「TRUE」の場合は近似値を探します。
取引手数料の表では「100,000」の次は「200,000」なので検索する値「156,000」を超えてしまいます。ですので「100,000」の行が取得する対象になり、表示する列の指定が2列目なので手数料には「95」が表示されます。
これが検索の型「TRUE」の動きになります。
VLOOKUP関数の注意点
「検索する値を入力するセル」と「検索範囲の一番左の列」の書式を「文字列」か「数値」で統一しないと「#N/A」エラーが出てしまいます。
「検索する値を入力するセル」が文字列なら「検索範囲の一番左の列」も文字列。「検索する値を入力するセル」が数値なら「検索範囲の一番左の列」も数値にする必要があります。
VLOOKUP関数が動かない場合は下記の記事もご覧ください。
【Excel】VLOOKUPが動かない!エラーが出た!を解決!
VLOOKUP関数のポイント
- 書式は「VLOOKUP(検索する値を入力するセル, 検索範囲, 表示する列の指定, 検索の型)」
- あらかじめリスト(一覧表)を作成しておく
- リストは別のシートに作成してもOK
- 検索範囲に指定した一番左の列が検索の対象
- 検索範囲は絶対参照で
- 検索の型「TRUE」の場合はリストを昇順に並べる
- 検索の型「TRUE」の場合はワイルドカードを使った検索ができる
- 検索する値と検索範囲の一番左の列の書式設定を合わせる