エクセルの「VLOOKUP」(ブイルックアップ)関数は、とても便利な関数です。
この関数を使えば、手作業では集計が難しい大規模なデータから、使いたい値を検索して引用することができます。
名簿や商品データなど、すでにまとめてあるデータを扱うときに便利な関数です。
Microsoftのエクセルのほかに、Google SheetsでもVLOOKUPは一般的に使用されています。
エクセルでVOOKUPを使う場面
以下に代表的なエクセルでVLOOKUP関数を使う場面を3つ紹介いたします。
データの結合については具体的に図を用いて解説します。
データの検索
すでに大規模なデータセットがあり、その中の特定の情報をすばやく見つけたい場合にVLOOKUPが役立ちます。
たとえば、顧客データベース内の顧客の名前または ID に基づいて顧客の連絡先情報を検索する、といった使い方ができます。
データ検証
VLOOKUPは、あるセルに入力された情報を、別のセルの事前定義された値と照合することで、そのデータが正確かどうか確認する、という使い方ができます。
たとえば、売上入力の際にセルに自分が入力した製品コードが、正しいコードかどうかを確認する、といった使い方ができます。
データ結合
VLOOKUPのデータの結合機能は、共通の識別子(従業員や商品のID番号など)を振っておいて、その識別子をつなぎとしてさまざまなデータソースやワークシートからデータを引用し、関連情報を 1 つのシートにまとめることができます。
たとえば、発注と支払いを製品コードや日付を識別子にしてまとめるといった使い方ができます。
それでは、データの結合機能を用いて具体的な利用シーンを1つ紹介いたします。
VLOOKUP関数は次のような用途で役に立ちます。
例:価格表から商品価格を検索して引用
VLOOKUPでデータ結合を行ってみます。
次のような売上記録があるとします。日付、商品、個数はわかりますが、単価が入力されていないので、売上が計算されていません。
別シートに商品の価格表はあります。
ですが、ここから「コップは200円、フォークは・・」と手入力で表を埋めていくのは、時間もかかりますし、何よりミスが起きしそうです。
エクセルのVLOOKUP関数を使うことで、素早くミスなく作業しましょう。
このほかにも、VLOOKUP関数は使い方次第で業務を効率的に進められる関数です。
エクセルのVLOOKUP使用手順
それでは、エクセルのVLOOKUP関数を使ってみましょう。
そもそも、エクセルのVLOOKUPの「V」とはなにを意味するのでしょうか?
これは「Vertical Lookup」の略で、「垂直(Vertical)」に値を見つけるという意味です。
ですから、検索のイメージは縦方向です。表の縦の列(通常は一番左の列)をもとに値を検索して、同じ表の別の列から、対応する値を取得します。
今回の例題をもとに説明すると、価格表のA列、商品ID(1~6)を手掛かりに、価格を検索して、売上記録のF列に表示させる、という使い方ができます。
エクセルのVLOOKUPの構文
エクセルのVLOOKUPの構文に入力する項目は、次の4つです
- 検索値
- 範囲
- 列番号
- 検索方法
これらを
=VLOOKUP(検索値, 範囲, 列番号, [検索方法])
という形で入力します。
検索値
検索で使いたい識別子が入る列を指定します。今回は商品コードをもとに検索するので、売上記録の方で商品コードが入る列、B列を指定します。下記の図を参考に、「B2」を入力してください。
範囲
つぎに、どこからデータを検索したいのかを指定します。元データと言い換えてもいいですね。今回は価格表です。こうした指定を「範囲の指定」と呼びます。
範囲の一番左の列には、検索値が入っている必要があります。今回の例だと商品IDです。その右の列のどこかに、検索して引用したい値(つまり、価格)があればOKです。
価格表がその形になっているか改めて確認すると
一番左のA列に商品IDがあり、そこから数えて3列目(Aが1列目、Bが2列目、Cが3列目と数えます)にお目当ての単価が記載されています。
ということで、エクセルのVLOOKUP関数の範囲として記入するのは「A:C」です。なお、絶対参照($A$1:$C$7)としても同じです。絶対参照については後程解説しますね。
なお、別シートに価格表を作っていますので、VLOOKUPの引数としては「価格表!A:C」となります。
列番号
データを取得したい場所が、検索値の入っている列から数えて何列目なのかを入力します。
今回の例だと、取得したい価格の情報は、価格表のC列に入力されています。C列は、検索値である商品IDが入っているA列から数えて3列目です。A列を1列目と数えますので、注意してください。
したがって、列番号として今回入力する引数は「3」となります。
検索方法
こちらは本来はオプションの項目で、入力しなくても関数は機能します。ですが、次の理由から「FALSE」と入力してください。
この引数を省略すると、自動的にTRUEが入力されます。するとエクセルのVLOOKUP関数は、もし検索した先に値がない場合、できるだけ近い値を探そうとします。
これは範囲の左端の列が昇順にソートされていることを想定した処理で、もし完全に一致するものが見つからない場合、近い行の値が表示されます。
今回の場合、コップの価格が見つからないからと言ってフォークの価格を返されても困ります。「FALSE」と入力しておけば、エクセルのVLOOKUP関数は完全一致した値だけを探します。もし一致しない場合はエラー(#N/A)が返されます。
エクセルのVLOOKUPの動作確認
すべて入力できたら、うまく価格を引用できるか試してみましょう。
上の図のように、F2に1,000という値が返ってきていれば成功です。
あとは、売上のG列に個数×単価、つまり「=D2*F2」と入力すれば、9月1日の売上は1,000円だと表示されます。これらの関数を列全体にコピーすれば、金額つきの売上記録の完成です。
エクセルでVLOOKUPを使う際に注意すべきポイント
使いこなせるととても便利なエクセルのVLOOKUPですが、引数が多いがゆえに注意点がいくつかあります。
参照元と参照先の両方に正しい検索値が入っているか
今回の例における商品IDのように、参照元と参照先の両方に同じ検索値が入っている必要があります。
商品ID(B列)を指定するつもりが個数(D列)を検索値として設定してしまったとします。
商品IDは1から6までしかないので、たとえば9月9日の個数「10」が検索されると、エクセルのVLOOKUP関数はエラー表示になってしまいます。
検索値は、複数のデータセットをつなぐ役割を持つ重要な値です。正しく設定できているか今一度確認してみてください。
「範囲」の設定がずれていないか
「範囲」の設定もVLOOKUPでは非常に重要です。今回の例題だと価格表のことです。
今回は価格表を含む列全体を指定する形で解説しましたが、これをたとえば「A1:C10」のように、より狭く設定することも可能です。
こうした設定を行う場合は絶対参照を使うようにしてください。
絶対参照とは、参照するセルを固定できる方法です。やり方は簡単で、列番号や行番号に「$」をつけます。たとえば「$A$1:$C$10」と設定すると、VLOOKUP関数を含むセルがどこにコピーされても、参照元となる価格表の位置が固定されます。
VLOOKUP関数を使う時にもっとも多いミスといっても過言ではないので、チェックするようにしてください。
列番号が間違っていないか
列番号の誤りも多い間違いです。ここまで述べてきたように、引数としては、検索値が入っている列から数えて何番目の行を参照したいのかを記載します。このとき、検索値が入っている列が1列目であることを忘れないでください。
エクセルのVOOKUPエラー対処法
最後に、エクセルのVLOOKUPを使ったときのエラー対処方法について説明します。
エクセルのVLOOKUPを使ったときに生じるエラー表示としては次のものが考えられます。
- #VALUE
- #REF
- #NAME?
- #N/A
数式や参照先のセルに問題がある場合の#VALUE
#VALUEが表示されたときには、エクセルのVLOOKUPの構文に誤りがないか確認してください。よくある間違いとしては、多すぎる引数が入力されている、反対に少なすぎる引数が入力されている、あるいは「,」(コンマ)が入力されていない、といったものです。行数が誤っている(参照先にはない行数を指定している)場合もあります。
もしくは、参照先のセル、今回でいうところの価格表のシートに問題があるかもしれません。
検索値の指定が正しいかなど、今一度確認してみてください。
セルが参照できない場合の#REF
セルが参照できない場合に表示されるのが#REFです。今回の場合だと、価格表のシートを削除してしまうとこの表示が出ます。あるいは、価格表の一部を含む列や行を削除してもこの表示が出ます。参照先のセルがきちんと残っているか、位置が変わっていないかなどよく確認しましょう。
関数名やセル範囲の名前が正しくない時の#NAME?
関数名が正しくないと#NAME?というエラーが出ます。
たとえば「VLOOKUP」の綴りが正しいかを確認してみてください。
値がない場合の#N/A
厄介なのは#N/Aです。エクセルのVLOOKUPで検索したのに値がない、といった場合に起こります。今回の例題で想定されるのは、品目数の増加です。
たとえば新しくカレー皿を販売したおに(商品IDとして7を付与したとしましょう)、価格表にそのデータが入っていない場合などです。
エクセルのVLOOKUP関数は7を検索しますが、価格表には商品IDが7のデータがないのでエラーとなります。参照元、参照先両方の確認が必要になります。
参照先の空白や書式設定までは引用できない
エラー表示ではありませんが、参照先のデータが空白で、エクセルのVLOOKUP関数が引用した値が0になるというケースがあります。
空白と0は厳密には異なりますが、残念ながらエクセルのVLOOKUP関数は空白を空白として引用することができません。引用した結果を使って更に算出を行う場合など、0として表示されていても問題ないか、確認することが必要です。
同様に、検索データの書式設定もリセットされます。もし参照先の書式設定を引き継ぎたい場合は、VLOOKUP関数の引用結果に改めて設定を行う必要があります。
エクセルのVOOKUPについてまとめ
この記事では、エクセルのVLOOKUP関数の使い方を解説しました。
エクセルのVLOOKUP関数はとても便利な関数です。大規模なデータから、使いたい値を瞬時に検索して引用することができます。名簿や商品データなど、すでにまとめてあるデータから新たな集計を作りたいといった場面で効果的です。
エクセルのVLOOKUP関数は、最初は仕組みを理解することに時間がかかるかもしれません。ですが、慣れると素早くミスなく作業できるようになるので、皆さんのお仕事や勉強で大いに役立つはずです。
今回の記事では、解説を平易にするため、商品IDという数字を手掛かりに価格を検索するという使い方を紹介しましたが、検索値として使えるのは数字だけではありません。文字列も検索値として使えます。エクセルのVLOOKUPの使い方に慣れてきたら、いろいろと試してみてください。