VLOOKUP関数の使い方
使用関数:VLOOKUP
VLOOKUP関数とは?
VLOOKUP(ブイルックアップ)とは、Vertical Look Up の略で、垂直方向に検索するという意味があります。別表のデータから検索してその値を自動入力できる関数で、様々な場面で使われます。商品コードから価格と商品名を、氏名から出身地と年齢を、購入金額から配達料を自動で転記してくれる便利な関数です。IF関数と並んで「覚えておきたい関数」No.1。VLOOKUP関数の基本的な使い方を初心者にも分かりやすく丁寧に図解します。
VLOOKUP関数の検索に使う表の作成
VLOOKUP関数に必要なのは、数式が入るセルと検索に使う表です。
VLOOKUPは縦方向に検索する関数であるため、表のデータが縦並べに作成されている必要があります。
VLOOKUPに適した表の作成プロセスは以下の記事を参照して下さい。
VLOOKUP関数は縦の検索、では横方向に検索するには?
横方向に検索するなら「HLOOKUP関数」(Horizontal Look Up)を使います。操作はVLOOKUPと同じ。「V」を「H」に変えるだけです。
横方向に並ぶ列項目も検索して交差位置の値を取り出すために、VLOOKUP関数をMATCH関数で補完します。この方法の解説記事です
VLOOKUP関数で使う表を別シートで管理する
数式が入るセルと検索に使う表を同じシート上に置いてもいいですが、実務で作業する時は別シートか別ブックに置いて管理することをお勧めします。
ブックとシートについて
また、データ表はテーブル化しておくと便利です。VLOOKUP関数がうまく機能しない、予期しないエラーが出るという問題を回避するのにも役立ちます。
VLOOKUP関数のエラーに対処する
VLOOKUPでは検索する範囲がずれたり、エラー#N/Aが返されたりすることがよくあります。
数式は間違っていない、検索範囲にはちゃんと検索値が然るべき場所に入ってる・・・でも、VLOOKUP関数はエラー#N/Aを返してくる! 一体、なぜ?!という時に確認すべき事項と対処法をまとめました。
VLOOKUP関数の基本的な使い方
では、実際にVLOOKUPで数式を組み立てて、特定のデータを検索してみましょう。
例として、商品の「価格表」から「商品名」を検索して「請求明細」のセルに自動入力させてみます。
「請求明細」の左端のセルに「商品コード」を入力すると、自動で右隣の「商品名」が表示されるということですね。
この例では、まず、「商品名」の入る最初のセル「B5」に数式を入れます。
「B5」をクリックして選択し、「数式」タブの「関数ライブラリ」にある「検索/行列▼」からドロップダウンするリストの一番下「VLOOKUP」をクリックします。
関数の引数ダイアログボックスが開きます。
VLOOKUP関数の引数は「検索値」「範囲」「列番号」「検索方法」です。
VLOOKUPの引数(1):検索値
VLOOKUP関数の最初の引数は「検索値」です。
「検索のキーとなるデータ」を指定します。この例では「商品コード」ですね。
「商品コード」を入力する最初のセルを選択します。選択されたセル周囲に破線が回転し始め、ダイアログボックスの「検索値」の項目に「A5」と入りました。
VLOOKUPの引数(2):範囲
次の引数の「範囲」とは、「検索するデータ範囲」のことです。
この例では、シートを「価格表」に切り替えて、
表のデータ範囲をドラッグして選択します。この時、見出し行は選択しません。選択するのは、データが入っている範囲だけです。
範囲を選択したら、F4キーを一度押して絶対参照にしておきます。
表をテーブル化してある(または、範囲にあらかじめ名前を定義してある)なら、テーブル名(または、範囲に定義した名前)をそのまま入力します。
VLOOKUPの引数(3):列番号
3番目の引数の「列番号」では、「前章の引数(2)の「範囲」の内、参照するデータの列は左から何番目か?」を指定します。
この例では、「商品名」を参照して表示したいわけですから、左から2番めの列ということです。半角で「2」と入力します。
VLOOKUPの引数(4):検索方法
4番目の引数の「検索方法」は、「FALSE=検索値と完全一致で検索する」と「TRUE=完全ではないが近い値も検索する」のどちらの方法を選ぶかを指定します。
この場合は近似値を参照する必要がないので、「FALSE」完全一致の検索方法を選びます。「検索方法」の項目に数字の「0」を入力(「TRUE」なら「1」)。「FALSE」と打ち込んでもOK。
通常「FALSE」指定がほとんどですが、検索方法の使い分けをちゃんと理解したい方は以下の記事を参照して下さい。
VLOOKUP関数の「検索方法」で「FALSE」と「TRUE」の使い分けについて実例を挙げて解説しています。
これで、全ての入力が完了。
自分で数式バーに入力するなら、「=VLOOKUP(A5,価格表!$A$5:$C$9,2,0)」または「=VLOOKUP(A5,テーブル1,2,0)」になります。
VLOOKUPで出るエラー値「#N/A」の始末と数式のオートフィルコピー
さて、ここで、一つ厄介なことが…。
ダイアログボックスの項目を入力し終えて「OK」すると、「#N/A」というエラー値が返されています。
検索値である「商品コード」に何も入れてないのだから、当然といえば当然ですね。
試しに「商品コード」を入力してみると、ちゃんと自動入力されます。
このエラー値を表示させないようにするにはIFERROR関数でVLOOKUP関数を囲む必要があります。
「=VLOOKUP(A5,テーブル1,2,0)」という式を「=IFERROR(VLOOKUP(A5,テーブル1,2,0),"")」 に変えてみて下さい。「#N/A」が消えて空欄になります。
IFERROR関数で未入力箇所の#N/Aエラーを消す方法の詳しい解説記事です。
最後に、A5セルを選択して「商品名」の列にオートフィルコピーします。
表に罫線などの書式が施されているなら、書式なしのオートフィルコピー。
複数の列にVLOOKUPの数式を使い回し
他の列に、同じ表から異なるデータを転記したい時は、最初の数式を当該セルにそのままコピペして、引数の「列番号」だけを修正します。
この例では、「商品コード」入力時に「商品名」と共に「単価」も自動入力されるよう設定します。
前章までで組み立てた「商品名」の数式をコピーして「単価」の最初のセルにペースト、「=IFERROR(VLOOKUP(A5,テーブル1,2,0),””)」を「=IFERROR(VLOOKUP(A5,テーブル1,3,0),””)」に修正します。
VLOOKUP関数に複数の条件を指定する
本来、VLOOKUP関数に複数の条件指定はできませんが、検索する表に複数の条件を連結させた列を増設することで可能になります。
下図の表にはA列に「検索値」として2つの条件「顧客コード=B2セル」と「商品名=D2セル」の値を連結させて入力します。「検索値」のA2セルに「=B2&D2」の数式を入力、下までオートフィルコピーします。また、VLOOKUP関数で「顧客コード」と「商品名」から請求額を求めるため、その検索値を表示させるA14セルに「=B14&D14」と入力しておきます。
「請求額」のセルに入れるVLOOKUP関数の引数「検索値」にはA14セル、「範囲」には表のデータ範囲、「列番号」には金額の列の位置(左から7列目)、「検索方法」はFALSE完全一致の「0」を指定します。
「顧客コード」と「商品名」の2条件を入力すれば、請求額が自動で取得できます。
VLOOKUP関数の使用例
見積書の作成プロセスで、プルダウンリストから選択した値に連動して「単価」の欄に数値が自動入力されるよう設定します。
カレンダーの祝日と年中行事を自動で表示させる設定。VLOOKUP関数で祝日名を検索し、IFERROR関数で平日に返されるエラー値を処理します。
郵便番号を半角で打ち込み、日本郵便で配布している郵便番号データからVLOOKUP関数を使って住所を呼び出す方法です。