8/02/2014

Excel。VLOOKUP関数。その9 範囲の表が複数ある場合ってどうするの?


Excel。VLOOKUP関数。その9
範囲の表が複数ある場合ってどうするの?

VLOOKUP関数+名前の定義+INDIRECT関数


VLOOKUP関数のテクニックもアレコレご紹介してきましたが、
企業研修や、お仕事をしている方から、よくご質問があるものがありまして、

それが、VLOOKUP関数の範囲。

その範囲の表が2つないし、複数あるのですが、VLOOKUP関数は使えますか?出来ますか?
というもの。

出来ないことも、無いわけではないのですが、VLOOKUP関数だけでは、ちょっと出来ないので、
今回は、VLOOKUP関数にINDIRECT関数の力も借りて、紹介してみたいと思います。

現場レベル・実践では、ホント色んなケースがありますから、
こういうことも出来るという事だけでも覚えておくと、手駒が増えますので、
使わないなぁ~と思う方も多いとは思いますが、知っておいて損はない、テクニックです。

なお、これからご紹介するものは、以前紹介したものの、【ほぼ再録】です。

まず、下記の表があります。

VLOOKUP関数の範囲は、ジャンルが異なっても一つにまとまっていて、
なおかつ、管理番号が重複しないような表・リストならば、
ノーマルなVLOOKUP関数で検索することが出来るのですが、
今回のように、野菜という表と果物という表がそれぞれあって、
管理番号がそれぞれ同じものが使われていて、重複している状態なのです。

そして、どう処理したいのかというと、A2からの表のC列の商品名とD列の単価を、
それぞれ、野菜と果物の表の範囲から、B列の管理番号を元に、検索したいという動作です。

つまり、ジャンルの表の管理番号の商品名を検索する。という動作になります。
そして、このような場合、A列のジャンルというのがポイントになってきます。

さて、説明はこのぐらいにして、作業に入りましょう。
まず、この野菜と果物の表に、名前の定義をつかって、範囲に名前を設定しましょう。
設定の方法は、範囲選択をして、名前ボックスに範囲の名前を入力すればOKですね。

ちなみに、今回は、G3:I5に野菜、G10:I12に果物という名前を設定してあります。


これで準備完了。VLOOKUP関数を作っていきます。
まず、

ジャンルのA3に野菜と入力しておきます。
管理番号のB3に100と入力しておきます。
C3にVLOOKUP関数の数式を作成していきますので、
VLOOKUP関数のダイアログボックスを表示しましょう。

検索値には、B3を入力します。これは、通常のVLOOKUP関数と変わりません。
そして、変わるのが範囲です。

範囲が2つある。


そこで、ジャンルを使って見分けるようにしていくわけです。
では、どうのようにするのかというと、INDIRECT関数を使うことによって可能になります。

先ほど、野菜と果物という名前を範囲に設定しました。
以前にも紹介しましたが、VLOOKUP関数の範囲に名前を使えるので、
名前の定義で設定した範囲の名前を参照できれば、その範囲を参照することができます。
野菜と果物をイチイチ、関数の修正で直すわけにはいきません。

そこで、INDIRECT関数を使うと、その修正を行わなくても、切り替えることが出来るのです。

INDIRECT関数は、その情報(文字)をそのまま使うことが出来る関数なので、ジャンル。
すなわち、A3に入力された文字を、名前の定義をした範囲として、
VLOOKUP関数の範囲として使えるようになります。

それでは、VLOOKUP関数の範囲のボックスをクリックして、
INDIRECT関数を挿入してINDIRECT関数のダイアログボックスを表示します。

参照文字列は、A3をクリックして、OKボタンは押さずに、
数式バーのVLOOKUPという文字をクリックしましょう。

なぜOKボタンをクリックしてはいけないのか?

というと、まだVLOOKUP関数の数式自体が完成しておりませんので、エラーになってしまいます。

数式バーのVLOOKUPという文字をクリックすると、
VLOOKUP関数のダイアログボックスに戻れます。

列番号は2。
検索方法は、false。

これで、あとはOKボタンをクリックしましょう。
じゃがいも
と表示されましたね。数式は、
=VLOOKUP(B3,INDIRECT(A3),2,FALSE)

この数式を下方向にオートフィルハンドルを使って、コピーしてみましょう。
りんごと表示されましたね。ジャンルを果物から、野菜に変えてみましょう。
りんごが、じゃがいもに変わるのが確認できます。


このように、VLOOKUP関数+名前の定義+INDIRECT関数というテクニックを使うと、
複数の範囲からでも検索することが可能になります。

まぁ、余談ですが、A列のジャンルはイチイチ、入力するのが面倒ですので、
入力規則のリストを設定しておくと便利ですね。

当然、今回作成した数式。管理番号が空白だとエラーになってしまうので、
IF+VLOOKUP関数にするのが、本来の形です。

VLOOKUP関数は、とっても奥が深い関数ですので、色々と試してみましょう。