VLOOKUP関数とは
「VLOOKUP」(読み方:ブイルックアップ)とは、検索したデータに該当した行の指定列からデータを取り出す関数です。=VLOOKUP(検索値,範囲,列番号,検索方法)
データを検索する関数の中でもっともポピュラーな関数といえます。しかし、その使用方法が理解しづらかったり、何度もヘルプにお世話になったりしている方も多いと思います。この記事を読んで、一気にVLOOKUP関数を制覇してしまいましょう!
<目次>
VLOOKUP関数の使い方を解説!
まず、VLOOKUP関数とは何か?を知って頂くために、簡単なサンプルをご覧ください。このサンプルでは、「商品検索」の「No」に商品Noが入力されると、「商品マスタ」内でそのNoを検索し、そのNoに該当する商品の「商品名」と「単価」を取り出して表示します。つまり、VLOOKUP関数は、データを検索し、そのデータに該当した行の指定列からデータを取り出す関数なのです。
それでは、VLOOKUP関数が入力されているセルのうち、商品名を表示するセルC16の内容を詳しく見てみましょう。
VLOOKUP関数 1番目の引数:検索するデータ
セルC16の数式は=VLOOKUP(B16,B3:G12,3,FALSE)
です。()の中の引数をひとつずつ解説します。
1番目の引数(今回の場合は「B16」)には、検索したいデータ、もしくは、そのデータを入力するセルを指定します。サンプルでは、「商品検索」の「No」のセルが指定されています。
入力されている関数 |
指定されたセルの位置 |
VLOOKUP関数 2番目の引数:検索する表の範囲
2番目の引数(今回の場合は「B3:G12」)には、検索の対象となる表の範囲を指定します。サンプルでは、「商品マスタ」のセル範囲が指定されています。なお、表見出しのセルを含めて指定する必要はありません。入力されている関数 |
指定されたセル範囲 |
検索するのは「左端列」
さて、ここで重要なポイントを押さえておく必要があります。1番目の引数に「検索するデータ」、2番目の引数に「検索する表の範囲」を指定したわけですが、「表の中のどのセル範囲を検索するのか」について指定していません。実は、VLOOKUP関数は、指定した表の「左端の列」を縦方向(行単位)に検索します。「左端ではなく、3列目で検索したい」といったように、検索するセル範囲を指定することはできません。VLOOKUP関数 3番目の引数:列番号(列位置)
3番目の引数(今回の場合は「3」)には、取り出したいデータの列位置を指定します。サンプルでは、「商品マスタ」の左から3列目(商品名の列位置)が指定されています。ここで注意したいのは、列位置は、2番目の引数で指定した表の「左端から何列目か」を指定する点です。入力されている関数 |
指定された列位置 |
VLOOKUP関数 4番目の引数:検索方法(検索の型)
4番目の引数(今回の場合は「FALSE」)には、「検索したいデータが表の左端列で見つからなかった場合にどうするか」という検索方法について設定します。ここでは、FALSEを指定しています。この引数の詳しい内容については後述します。関数は「結果を表示するセル」に入力
関数の基本の復習になりますが、関数は「結果を表示するセル」に入力します。従って、VLOOKUP関数は、取り出したデータを表示したいセルに入力します。サンプルでは、取り出した商品名を表示するセルC16に入力されています。VLOOKUP関数の押さえておくべきポイント
VLOOKUP関数の押さえておくべきポイントは次のとおりです。- 検索は、指定した表の「左端列」で行われます。
- 取り出したいデータ位置は、指定した表の「左端から何列目か」で指定します。
- VLOOKUP関数は「検索結果を表示したいセル」に入力します。
セルB16に「0005」を入力すると、商品マスタの左端列で縦方向に検索され、「0005」が入力されている行が検索されます。そして、その行の左端(表の左端)から3列目のデータ「表計算ソフト」が取り出されて、セルC16に表示されます。
なお、セルD16には、次のような数式が入力されています。「単価」を表示させたいので、3番目の引数【列位置】に「5」が指定されています。
セルD16 =VLOOKUP(B16,B3:G12,5,FALSE)
基本的な解説はここまでです。VLOOKUP関数の仕組みが見えてきたでしょうか?
続いて、補足したいポイントをいくつか解説します。
補足ポイントその1:検索データが空白の場合に備えて
検索データを空白にすると、VLOOKUP関数を入力したセルに、次のような「#N/A」エラーが表示されてしまいます。そこで、以前、「エクセルで見積書の作成(計算式の追加)」の「IF関数を活用しよう!」で紹介したように、IF関数を使って数式を以下のように書き換えます。これで、検索データが空白でもエラーは表示されません。IF関数を利用 |
エラーが表示されなくなった |
IF関数を使う場合のセルC16の数式は
セルC16 =IF(B16="","",VLOOKUP(B16,B3:G12,3,FALSE))
補足ポイントその2:検索データの書式設定に注意
今回のサンプルでは、検索データを入力するセルの表示書式を「文字列」に設定しています。その理由は、「Excelでリスト形式のデータを作る」の「入力データの形式を統一しよう」で紹介したように、このサンプルでは、商品Noを「4」といった数値ではなく、「0004」といった文字列として扱っているからです。もし、このセルの表示書式を文字列に設定しないで「標準」のままにしておくと、「0004」と入力しても「4」に自動変換されてしまい、「#N/A」エラーとなってしまいます。このように、検索データを入力するセルの書式設定は、検索対象となる表の左端列の書式に合わせておいた方が良い場合があるので注意しましょう。
補足ポイントその3:引数「検索の型(検索方法)」について
4つ目の引数「検索の型(検索方法)」は、「検索したいデータが表の左端列で見つからなかった場合にどうするか」という検索方法について設定する引数でしたね。この引数には、「FALSE」か「TRUE」を設定します。FALSEの代わりに「0」、TRUEの代わりに「1」を使用して設定することもできますが、一般的ではないため、ここでは、FALSEとTRUEを使用して解説します。FALSEを指定すると、データが見つからなかった場合、「#N/A」エラーが表示されます。TRUEを指定、または、この引数の指定を省略すると、データが見つからなかった場合、そのデータを超えない最大値を検索します。ただし、表の左端列で昇順に並べ替えておく必要があります。例えば、「50,000」を検索しても見つからなかった場合、「50,000」を超えない最大値が検索されるので、下図の場合、「45,000」が検索されます。予算内で収まる単価かどうかを調べたい場合などに利用できますね。
※左端列を「単価」に修正したサンプルを使用しています |
入力されている数式 |
セルC16 =IF(B16="","",VLOOKUP(B16,B3:G12,3,TRUE))
この引数の設定について、今回のサンプルのような「商品リストから商品を検索したい」といった場合は、注意が必要です。検索したいNoに「0011」を入力したとします。もし、4番目の引数が省略、もしくはTRUEに設定されていると、「0011」がないので、この値を超えない最大値「0010」のデータが取り出されます。これだと、商品No「0011」の商品は「イス」であると勘違いしてしまう可能性があります。
このサンプルでは、商品No「0011」の商品が登録されていないのなら、「登録されていない」ということがわかるように「FALSE」を設定する必要があるでしょう。つまり、「完全に一致するデータだけを検索したい」場合は「FALSE」に設定するということです。
さらに、私は「省略した場合はTUREが設定される」という点にも注意が必要と考えます。意識的に省略するのなら良いのですが、うっかり設定を忘れてしまった、といった場合、エラーが表示されないので、しばらく気付かないかもしれません。用途にもよりますが、商品リストから商品を検索する、といったような場合は、常にFALSEに設定する、という意識を持つと良いと思います。
なお、今回は、VLOOKUP関数を使って1つの表からデータを取り出す方法を紹介しましたが、「VLOOKUP関数の定番組み合わせテクニック! 」では、2つの表が作成されていることを想定して、条件によって取り出す表を切り替える、という定番テクニックを紹介します。また、「関数で条件を満たす複数のデータを表から取り出す方法」では、関数を使用して条件を満たす複数のデータを表から取り出すテクニックを紹介しています。これらも、ぜひご覧ください!
【関連記事】