-------------------------------------------------------------------------------- 「MS Excel で VLOOKUP 関数を使うときのエラートラップの方法」 つくった人 柳井 政和 URL : http://crocro.com/                           最終更新:2000.11.17 -------------------------------------------------------------------------------- ●問題発生の経緯  友人に以前教えた「MS Excel」の「VLOOK 関数」の使い方について質問を受ける。  「MS Excel」では、セルの計算をサポートする数多くの関数が用意されている。この関 数を使えば簡単なプログラムのような真似もできてしまう。優れた機能と言え、私も簡単 な計算で解ける問題では多用している。  発生した問題は「VLOOK 関数」という「リストの中から目的の値を検索する」関数で、 「リストにない値を指定した場合」に、エラー表示である「#N/A」が表示されてしまうと いうことである。  このエラー「#N/A」を表示する代わりに、数字の「0」を返す方法について質問を受け る。  以下に VLOOK 関数の仕様と上記問題の解決方法を示していく。 ──────────────────────────────────────── ●「VLOOK 関数」の仕様  「VLOOK 関数」は、大量のリストの中から効率的に目的のデータを探し、セルに出力さ せる関数です。わざわざ毎回計算してセルに値を入力しなくても、自動的に値を探し出し てくれるので非常に便利です。  私は、計算が面倒で対応表を使った方が楽な処理のときには、この「VLOOK 関数」を利 用しています。ただ、対応表が大きくなったりすると処理が重くなるので使い過ぎには注 意が必要です。  以前、10MBぐらいの複雑な検索表を作ったときには、ファイルを開くだけで1分以上かか りました。  それでは以下に仕様を示します。    VLOOKUP(値,範囲,列,検索条件)   ・値には検索条件を指定します。この値と一致するセルを「VLOOK 関数」は検索しま    す。   ・範囲には検索領域とその結果を返す領域を指定します。この範囲を利用して「VLOO    K 関数」は検索をおこないます。   ・列は検索の結果を返す列を指定します。「VLOOK 関数」は、検索領域の左端の列を    調べて、ここで指定した列を検索結果として返します。   ・検索条件には、0,1のフラグで、検索失敗時にエラー表示を返す(0)か、リストの末    尾を返す(1)かを指定できます。    例)VLOOKUP(211,A2:B11,2,0)      A    B   1   10   アリストテレス   2   20   デカルト   3   30   ガリレオ   〜         11  40   コロンブス   ・211という値を、   ・A2:B11のセル領域(列A 行2 〜 列B 行11 の範囲)から検索します。検索される列    は、この範囲の中で一番左の列。ここでは「列A」です。   ・2列目を結果領域として返します。ここでは列A、列B のうち二番目の列である列B    を返すように指定しています。値と同じ数値が「列A 行3」にあった場合は、「列B    行3」が結果として返ります。    この場合では値が30で「列A 行3」と一致した場合は「ガリレオ」が返ります。   ・検索条件「0」なので、検索失敗時にはエラー表示「#N/A」が返ります。 ──────────────────────────────────────── ●問題の解決方法  「VLOOK 関数」が検索に失敗した場合に返すエラー「#N/A」を表示する代わりに、数字 の 0 を返す方法は簡単です。  「VLOOK 関数」が返すエラー表示「#N/A」を、エラー表示かどうかを判定する「ISERRO R 関数」で判定してやれば良いのです。  この結果を元に、「IF 関数」で結果を出力します。以下にサンプルを示し、各関数の 説明を最後に付記します。    解決方法)    =IF(ISERROR(VLOOKUP(211,A2:B11,2,0)),0,VLOOKUP(211,A2:B11,2,0))   ・「VLOOK 関数」を「ISERROR 関数」で囲み、エラーかどうかを判定します。   ・エラーならば0を、エラーでないなら「VLOOK 関数」の結果を表示するように、    「IF 関数」で分岐させています。 ──────────────────────────────────────── ●「ISERROR 関数」の仕様  エラーであるなら true を、そうでないなら false を返す関数です。    ISERROR(値)   ・値には判定する関数を入れます。   ・値がエラーなら true を、エラーでないなら false を返します。 ●「IF 関数」の仕様  条件が true なら最初の値を、false なら後の値を返します。    IF(条件,true値,false値)   ・条件には判定文を入れます。   ・「true値」には true の場合の値を入れます。   ・「false値」には false の場合の値を入れます。 -------------------------------------------------------------------------------- copyright (c)2000-2001 Masakazu Yanai