複数セルのデータをキーとして該当項目を検索する(VLOOKUP関数)

 この記事の親記事はExcelの入力規則のプルダウンに表示されるリストを、他のセルの値に応じて限定する(章や項目などの場合) - stacked tip that highですが、この記事だけでも内容は閉じている*1ので、安心して下さい。

VLOOKUP関数とは?

 さて、例えば右の図のように、都道府県名(以下「県名」)とそれぞれの都道府県庁所在地(以下「県庁所在地」)のデータに対して、県名を指定すると、隣にその県庁所在地が出るようにしたい時、VLOOKUP関数が大変有用です。VLOOKUP関数は、

   VLOOKUP(検索値, 範囲, 列番号, [検索方法])

という引数を持っています。右の例では、セルC3には
   =VLOOKUP($B$3,$B$6:$C$52,2,FALSE)
という式が入っています。この中の3番目の引数は、「左から数えて何列目のデータを引っ張ってきますか?」という意味で、2番めの引数で指定している範囲はB列からC列までなので、C列のデータを引っ張ってきているというわけです。
 例えばこれを、範囲をD列まで広げ、そこに都道府県の木(以下「県の木」)のデータを置き、セルD3に
   =VLOOKUP($B$3,$B$6:$D$52,3,FALSE)
と入力すると、B3で指定した県名の県の木が表示されるようになります。因みにセルC3に
   =VLOOKUP($B$3,$B$6:$D$52,2,FALSE)
と打っても問題ありません。範囲が大きくなろうと、左から2番目のデータを引っ張ってくるだけですから。
 これで、VLOOKUP関数の概要をわかっていただけましたか?VLOOKUP関数は、このようにある値をキーに該当項目を検索してくるにはうってつけの関数です。強いて弱点を言えば、VLOOKUP関数を使う場合は、範囲の一番左の列のデータしか検索範囲に選べないということですね。これを克服するには、INDEX関数とMATCH関数を使えばいいのですが、まぁそれはまたの機会に。

複数のキーを検索に使いたい

 さて、やっと本記事の本題です。さっきまでは、1つのキー「都道府県名」を用いて該当項目を検索し表示しました。これが2つ以上のキーになったら、どうすればよいのでしょうか?

 下の図は、小針晛宏『確率・統計入門』の1章から4章までの各章および各セクションごとのタイトル及びページ番号である。今、章番号とセクション番号を指定すると、その章およびセクションのタイトルとページ番号を出るようにしたい。同じ章の中に複数のセクションがあるので、章番号だけではセクション名を確定できないし、一方で、別々の章に同じ番号のセクションがあるので、セクション番号だけでもセクション名は確定できない。章番号とセクション番号との両方が指定されないと、セクション名は決まらないのである。

 答えは単純で、2つ以上のキーを1つのキーにしてしまえばいいのです。上の図では、実はD列が非表示になって隠されています。(Windows版では非表示列があると若干境目の線が太くなっているだけですが、Mac版では非表示列の両隣の列名が青色になるので、知ってる人にはバレバレでしたね。)では、D列を表示して見ましょう。

D列のデータは、B列とC列の値をアンダースコアで結合しているという、至極単純なものです。例えばセルD2には
   =B2&"_"&C2
という数式が入っています。そして、この結合された値をキーとして、章名とセクション名、ページ番号をVLOOKUP関数で引っ張ってきます。セルE2には
   =VLOOKUP($D$2,$D$4:$G$25,2,FALSE)
という数式が入っており、セルF2及びG2も同様に
   =VLOOKUP($D$2,$D$4:$G$25,3,FALSE)
   =VLOOKUP($D$2,$D$4:$G$25,4,FALSE)
となっています。これで、目的のフォームを作ることができました。


確率・統計入門

確率・統計入門

*1:「閉じている」っていう言葉を「この中だけで完結している」という意味で使うのは、数学用語としての「閉じる」の用法なんですかね?