VLOOKUP関数(2) - セル範囲検索 [Excel関数リファレンス]

[書式] VLOOKUP(<検索したい値>,<対象範囲>,<列番号>,[検索方法])

 

[機能] 1.[検索方法]に TRUE を指定(もしくは省略)した場合

        <検索したい値> 以下の最大値を <対象範囲> の1列目からさがし、

                                           その行の <列番号> 目のセルの値を返します。

        <対象範囲> は、必ず1列目が昇順で並べ替えられていなければなりません。

 

      2.[検索方法]に FALSE を指定した場合

        <検索したい値> を <対象範囲> の1列目からさがし、その行の <列番号> 目のセルの値を返します。

        <対象範囲>の並び順は任意です。

 

[引数] <検索したい値> 検索したい値やセルを指定します。
<対象範囲> 検索対象となる範囲を指定します。この範囲の1列目が検索対象となります。
<列番号> <検索範囲> の何列目を返したいかを指定します。「1」を指定すると、検索された値そのものが返ります。
[検索方法] TRUE 、FALSE のいずれかを指定します。省略は TRUE とみなされます。

                                                            

 

●●● 商品コードの検索には FALSE が必須 ●●●

 

前回お話しした、4番目の引数が存在しなかった時代には、商品コードなどを扱う検索に

VLOOKUP関数を利用することができませんでした。

 

それは、次のような理由のためです。

 

たとえば、間違った商品コードを <検索したい値> として指定した場合、本来ならエラーを

返してもらいたいところです。

ところが、当時は範囲検索専門の関数でしたので、 

  「前後の近い行の値を返してしまう

わけです。

これでは商品コードなどの検索には不向きですね。 

 

ということで、4番目の引数が登場。ここに FALSE を指定すれば「完全一致」の検索ができる

ようになったのです。

 

 

●●● せっかくの #N/Aエラーですが、見た目がちょっと ●●●

 

それでは、VLOOKUP関数で FALSE を指定した方法の、代表的な例を見ていきましょう。 

たとえば次のようなケースです。

 

参加者名簿の「学生番号」(A列)を入力することで、学生名簿から検索して「氏名」や「性別」(G列やH列)

の値を自動的に表示したいようなケースです。

 

VLOOKUP関数FALSE_1.jpg 

まずこのシートは、<対象範囲> の部分が昇順に並べ替えられていないのが、TRUE のケース

と異なるところです。FALSE の場合、<対象範囲>の並び順は、任意でかまいません。

 

セルB4 には

  =VLOOKUP(A4,$E$4:$H$23,3,FALSE)

セルC4 には

  =VLOOKUP(A4,$E$4:$H$23,4,FALSE)

という計算式が入力されています。

 

そしてそれぞれ、13行目まで、下方向にコピーしてあります。

(蛇足ではありますが、「E4:H23」 は、コピーをしても参照範囲が変わらないように、絶対参照で

「$E$4:$H$23」となっています)

 

さて、このシートでは、誤った学生番号が入力された「08-9999」の部分(9行目)には、確かに

  #N/A

が表示されています。これはOK、意図した通りの結果が得られました。

 

でもそのかわり、学生番号が入力されていないところにまで #N/Aエラーが表示されています。

予備にもうけた行にまでエラー値が表示されてしまうのは、ちょっと格好が良くないです。

 

そこで、次に、このエラー値の消し方を考えてみましょう。 

 

 

 

●●● エラー値を出さないための基本 ●●●

 

今回は、もっとも基本的なテクニックでこのエラーを消したいと思います。

(計算式を変えないチカラワザもあるのですが、それは次回。。。)

 

エラー値を出さない基本は、

 

  「計算元の値が、その関数の動作に適切かどうかを調べて、IF関数で対処

 

することです。

 

このケースでは、次のようになります。 

VLOOKUP関数FALSE_2.jpg

 

セルB4の計算式を

  =IF(ISBLANK(A4),"",VLOOKUP(A4,$E$4:$H$23,3,FALSE))

セルC4の計算式を

  =IF(ISBLANK(A4),"",VLOOKUP(A4,$E$4:$H$23,4,FALSE))

というように変えたわけです。

 

この計算式は、

 

  「もし学生番号がブランクなら、「""」(空白文字列)を、そうでなければVLOOKUPの

計算結果を返しなさい」

 

という意味です。

 

これのようにすれば、学生番号に入力がない場所には、きちんと空白が表示されるようになります。

 

  

さて、今回はVLOOKUP関数の FALSE の用法と、エラー処理の基本について見てきました。

次回はあえて、基本からちょっとだけはみ出した、チカラワザを紹介する予定です。