VLOOKUP関数で複数条件を指定する方法とは?
Excelで作業を効率化する為によく使われる関数。中でも、VLOOKUP(ブイルックアップ)関数については「なんとなく聞いたことがある」「使った事があるかも」という方が多いのではないでしょうか。今回はそんなVLOOKUP関数についておさらいしつつ、「複数条件」で検索する必要がある場合の対処法をご紹介したいと思います。
VLOOKUP関数とは
そもそも「VLOOKUP関数ってなんだっけ?」という方もいらっしゃるかもしれませんので、簡単に復習してみましょう。
VLOOKUP関数は
①”指定した検索条件”に『対応する値』を
②”指定した範囲”から調べて
③”指定した場所”から抽出することができる関数
です。
ざっくり言うと、
①”鬼滅の刃第8巻”という漫画の単行本が
②”寝室の右側の本棚”にあるはずだから
③”単行本の表紙”を確認して『表紙に描かれているキャラクターが誰か』を教えてというお願い
といった感じでしょうか。
いまいちピンと来ない方は、とにかく膨大なデータの中からでも「指定した検索条件に当てはまるものを見つけて来てくれる関数」と、まずは捉えていただければと思います。
関連ページ:VLOOKUP関数も学べる、ビジネスExcel2016 関数編
VLOOKUP関数の使い方
次に、実際に関数の記述について確認してみましょう。
Excelで関数を使用する際には、その関数が正しく動作する為の式(構文)を入力する必要があります。VLOOKUP関数の場合は『=VLOOKUP(検索値,範囲,列番号,検索の型)』このようになっています。()内には「引数(ひきすう)」という以下のような指定すべき項目が4つあります。
①【検索値】 …検索条件となる値や文字列を入力します。
②【範囲】 …検索を行う範囲を指定します。※この際、①検索値を含む列が左端になっている必要があります
③【列番号】 …どの列の値を取り出すか(②範囲の左から何列目か)を指定します。
④【検索の型】…完全一致(FALSE)か近似一致(TRUE)どちらで検索するかを指定します。
実際に以下の例で説明すると…
こちらに価格表という名前で、商品名と原価、通常販売価格と会員販売価格を一覧にしたデータがあります。
この時、商品名からその原価を知りたくなったので、E2セルに以下のVLOOKUP関数を入力しています。
=VLOOKUP(D2,B6:E11,2,FALSE)
つまり、「D2」セルに入力された商品名Dを①検索値として、
「B6:E11」の価格表の②範囲で検索します。
また抽出する値は、③列番号としては範囲の左から「2」番目の原価のC列の値なので、
Dという商品名の原価の値である2,500を抽出した。
という事ですね。
ここで、4つ目の引数である「検索の型」のFALSE(完全一致)とTRUE(近似一致)の違いですが、基本的には完全に一致するFALSEを指定しておけば問題ないと思います。
※TRUEを利用して近似一致で検索したい場合は、検索値が数字であった場合、昇順に並んでいないと思った通りの結果が反映されない可能性がある為、注意が必要です。こちらについてはまた別の機会にご説明したいと思います。
また、今回はわかりやすく2つ目の引数の「範囲」をきっちりと「B6:E11」のように指定していますが、仮に上記のような価格表に商品が今後続々と追加されデータが増えていく可能性がある場合、範囲は「列全体で指定」(「B:E」のように)する方が効率的です。
そうする事で、縦方向にデータが増えていっても、いちいち範囲を設定しなおさなくて済むからですね。
VLOOKUPで複数条件を指定する方法
さて、先ほどのようにVLOOKUP関数を使えば簡単に「商品名」を指定する事で「原価」を抽出する事が出来ます。これが何千行というデータであってもすぐに正しい結果を出してくれるのが関数の優れたところです。
ただし、今度は以下のようなデータがあったとします。
販売エリアと会員種別ごとに、売上個数と単価、そして売上額を管理しているような表のようです。
こうした中で、例えば「大阪」エリアの「非会員」への売上個数はいくつなのか、という値が知りたい場合に問題が出てきます。条件が2つになってしまうからです。
基本的に、VLOOKUP関数で指定できる検索値(条件)は1つとなっていますので、これは困ってしまいますね。
仮に「大阪」を検索値として「売上個数」を抽出しようとすると、このVLOOKUP関数は上から順番に検索をしていくので、6行目の「大阪」を先に見つけてしまい、「大阪」ではあるものの「会員」の「売上個数」である「20」を返してしまいます。これでは誤りですね。本当は「非会員」の数値が知りたいのですから。
かといって販売エリアと種別の列を入れ替えて(※)「非会員」を検索値にすると、今度は先に5行目の「非会員」を先に見つけてしまい、「非会員」ではあるが「東京」の「売上個数」である「100」を返してしまいます。
※範囲の左端の列に検索値を含んでいる必要がある為、上記の画像から列を入れ替える必要があります
このように、VLOOKUP関数を複数条件で使いたい場合、どうすれば良いのでしょうか。
関連ページ:VLOOKUP関数も学べる、ビジネスExcel2016 関数編
もっともシンプルな方法として、
「複数(2つ)の条件を結合した列を新たに作り出す」
という方法があります。
その新たに作成した検索条件を、引数に指定する事で実現しようというわけですね。先ほどの例でいうと、以下のように2つの条件となる「販売エリア」と「種別」を合わせた列を左端のB列に作成します。
なお、この際も数式を利用し入力間違い等がないようにしたいと思いますので、2つのセルの文字列を合わせる「&」を活用しています。今回は「C列の販売エリア」と「D列の種別」を結合する為に、「=C5&D5」と入力しオートフィルにてコピーしています。
すると、「東京会員」「東京非会員」の様に2つの条件を結合したセルが新たに出来上がります。
その上で、2つの条件を結合した値を検索値として、VLOOKUP関数を設定します。
そうすると本来2つの条件であった、「大阪非会員」という検索値で探してくれるので、
これで、「販売エリア:大阪」+「種別:非会員」の「売上個数」である「80」をセルに抽出する事が出来ました。
VLOOKUP関数が活用できる場面とは
このように、検索値を指定した範囲から引っ張ってくるVLOOKUP関数ですが、実際にどのようなデータや資料で活用出来るのでしょうか。もちろん例に出した「商品名(文字列)」から「単価(数値)」などの値を抽出したい時が代表例として挙げられます。他にも名簿リストの「名前(文字列)」から「住所データ(文字列)」を抽出する、あるいは試験結果データの「受験者名番号(数値)」から「合否結果(文字列)」を抽出するなど、一覧(リスト)の中から特定の値を返す必要がある場合に便利です。
データ量が少ない場合は「目視で確認した数値を手入力すれば良い」という風に思われる方がいらっしゃるかもしれませんが、基本的には自動化できるよう・またミスがないように関数(数式)を用いて抽出する事が求められます。主に理由は2点です。
- 万が一値が後日変更になった場合、目視で手入力した値も改めて変更しなくてはならず、手間とミスが発生する
- データがその後増えていき膨大な量になった場合、対応しきれなくなる
特に他の方と共有するようなデータファイルである場合は、なるべく関数(数式)を用いて組むことが必要になります。そうする事で、修正の際に他の方にもわかりやすくなるからです。
目視や手入力と言った作業よりも格段に作業効率を上げる為、なるべくミスをなくす為、VLOOKUP関数はビジネスで扱うデータでは頻繁に利用されます。ご自身で使いこなせるように、また他人のVLOOKUP関数の修正が出来るように、しっかりと知識を身に着けておきましょう。
VLOOKUP関数が出来れば中~上級者の仲間入り
VLOOKUP関数はMOSという資格試験でもExpertレベル(上級)の出題範囲になっていますが、ビジネスでExcelを利用するのであればVLOOKUP関数の基礎は抑えておきたいところです。
Excelには他にもCOUNTIF関数やSUMIF関数など業務で活用できる関数が多く存在します。
基礎からExcelを勉強したいという方や資格取得を目指しているという方まで、Excelの学習に興味がある方は、ぜひパソコン教室わかるとできるのExcel講座の内容をチェックしてみてください。
「パソコン教室わかるとできる」は教室数トップクラスのパソコン教室なので安心して通っていただけます。全国に約200教室展開していますので、まずはお近くの教室までお気軽に無料体験をお申し込みください!
・無料体験のお申し込みはこちら