ITライター 立山秀利
Excelでより効率よく目的の表を作成したり計算を行ったりするには、適切な関数を使いこなすことがポイントとなる。なかでも、VLOOKUP関数はよく使われる関数であり、マスターしておきたい。今回は、VLOOKUP関数の基本的な使い方を紹介する。
元となるデータが入力された表があり、その表から目的のデータを探して、別の表に入力したいシーンはよくある。例えば、元データとして商品一覧の表がG~I列にあり、列は商品コード、商品名、価格という構成とする。そして、別表として売上データの表がA~E列にあり、列は日付、商品コード、商品名、価格、数量とする。
売上データの表に商品のデータを入力する場合、売上があった商品コードを入力したら、その商品コードに該当する商品名と価格のデータを商品一覧の表から探して入力しなければならない。その際、商品一覧の表から探して入力する作業を目視および手作業で行っていては、作業に時間を要するとともに、ミスの恐れも常につきまとう。
(画像をクリックすると拡大表示します)
・B3~B10セル: 売上があった商品コードを入力
・C3~C10セル: 商品コードに該当する商品名を入力
・D3~D10セル: 商品コードに該当する価格を入力
そこで活用したいのがVLOOKUP関数だ。指定した表の中から、指定した値の行を検索し、その行から指定した列のデータを取得する関数である。
----------------------------------------
=VLOOKUP(検索値, 範囲, 列位置, [検索の型])
検索値: 検索する値
範囲: 目的のデータが含まれる表の範囲
列位置: 取得するデータの列番号
検索の型: 検索方法。近似値で検索するならTRUE、完全一致で検索するならFALSEを指定
----------------------------------------
先ほどの例の場合、売上データの表の商品名と価格の列にVLOOKUP関数を使えばよい。例えば、1件目の売上データの商品名であるC3セルの場合、第1引数「検索値」には、商品コードが入力されているB3セルを指定する。
第2引数「範囲」には、商品一覧の表で実際にデータが入力されている範囲であるG3~I6セルを指定する。第3引数「列位置」には、商品一覧の表では商品名は2列目にあるので、2を指定する。
第4引数「検索の型」は省略可能であり、省略するとTRUEが指定されたと見なされる。今回のようなケースでは完全一致で検索を行うため、省略せずにFALSEを指定する必要がある。
----------------------------------------
=VLOOKUP(B3,G3:I6,2,FALSE)
----------------------------------------
すると、商品コードの列に入力したデータを元に、商品一覧の表から該当する行を検索し、商品名と価格のデータを取得して表示される。
(画像をクリックすると拡大表示します)
D3セルの価格なら、第3引数「列位置」に3を指定すればよい。
----------------------------------------
=VLOOKUP(B3,G3:I6,3,FALSE)
----------------------------------------
(画像をクリックすると拡大表示します)
このように売上の表におけるC列の商品名とD列の価格のデータについては、商品一覧の表から手作業で探して入力する作業がVLOOKUP関数で自動化されるので、手間もミスの恐れも最小化できる。
ここまで第2引数「範囲」は相対参照で指定してきたが、売上の表の2件目(4行目)以降もVLOOKUP関数をオートフィル機能などでコピーして利用したい場合、絶対参照で指定することが欠かせない。相対参照で指定してしまうと、コピーした際に範囲の表のセル番地がずれてしまい、正しく検索できなくなってしまうので注意しよう。
例えば、C3セルに入力したVLOOKUP関数の式を、C4~C10にオートフィルでコピーしたとする。もし、C3セルにて第2引数「範囲」を相対参照で「G3:I6」と指定したなら、C4セルでは1行ずれて「G4:I7」とコピーされてしまい、商品一覧のセル範囲が不適切になってしまう。
(画像をクリックすると拡大表示します)
C4セル:第2引数「範囲」が1行ずれた「G4:I7」とコピーされてしまった。
このようなトラブルを防ぐために、C3セルでは第2引数「範囲」を「$G$3:$I$6」と絶対参照で指定する必要がある。すると、C4~C10にオートフィルでコピーしても、第2引数「範囲」は常にG3~I6セルでコピーされ、商品一覧のセル範囲を正しく指定可能となる。
(画像をクリックすると拡大表示します)
同様にD列の価格も、D3セルのVLOOKUP関数の式で、第2引数「範囲」を絶対参照に修正すれば、D4セル以降にコピーしても商品一覧のセル範囲を正しく指定できる。
(画像をクリックすると拡大表示します)
このようにVLOOKUP関数を使えるようになれば、別の表から該当データを探して入力することが、業務の効率や精度をより向上できるようになるだろう。
立山秀利(たてやま・ひでとし)
カーナビのソフトウェア開発、Webプロデュース業務を経て、現在は、システムやネットワーク、Microsoft Officeを中心に執筆中。 主な著書に『Excel VBAのプログラミングのツボとコツがゼッタイにわかる本』などがある。
(監修:日経BPコンサルティング)