指定された値から別表を検索して目的の値を取り出すには?

Question 22.4 Previous Next
別表
あるセルを参照し、そのセルの数値によって別表を参照して、いくら以上ならば、その隣のセル値を表示するには?

左図の場合、参照セル値が34なので、別表の表示項目から60を表示セルに表示させたい。
Answer   Copyright (C) 1999.11.11 永井善王
これを叶えてくれるワークシート関数があります。それは VLOOKUP 関数で、指定された値から情報テーブルを検索して、目的の値を取り出してくれます。
別表の回答 VLOOKUP関数を使うためには、情報テーブルを用意しなければなりませんので、質問の図を、左図のとおり修整してみました。

変更カ所は、別表の中の「以上」の列を数値に変えました。「未満」の列は不用ですが、そのままにしてあります。

VLOOKUP関数の書式は次のとおりで、数式として A6セルに入力しておきます。

 VLOOKUP(検索値, 範囲, 列番号, 検索の型)

引数の指定方法を Excelのヘルプで調べて、下記に抜粋しておきました。
・「検索値」には、A3セルを指定します。
・「範囲」とは情報テーブルの範囲のことですから、C3:E7を指定します。「範囲」の左端列のデータは、最後の引数「検索の型」に TRUEを指定した場合は、昇順に並べ替えておく必要があります。
・「列番号」とは目的の値が入っている列が、情報テーブルの何列目にあるかを指定します。この場合は C列から数えるので 3になります。
・「検索の型」は、検索値と完全に一致する値だけを検索するか、その近似値を含めて検索するかを、論理値で指定します。
TRUE を指定するか省略すると、検索値が見つからない場合に、検索値未満で最も大きい値が使用されます。
FALSE を指定すると、検索値と完全に一致する値だけが検索され、見つからない場合は エラー値 #N/A が返されます。
この回答では省略していまので、検索値と完全に一致する値か、検索値未満で最も大きい値が返されます。
例えば、A3セルの値が 30の場合は、A6セルには 60が返されます。

ここで気になっていることを検討しておきましょう。
質問の図をよく見ると、 C列の見出しが「以上」になっていますが、C3:C7セルの値は「10<」~「50<」のようにイコール記号(=)が付いていません。例えば、A3セルの値がジャスト 30であった場合の返り値は、60で良いのでしょうか。もしも具合が悪い場合は、回答の図の C3:C7セルの値を調整する必要があるでしょう。
サンプルブックのダウンロードは ここをクリック  (YNxv959.xls 20KB)
※ 一旦、ブックをハードディスクに保存し、後で改めて開いてから実行してください。

VLOOKUPの参考ページ:
VLOOKUPで検索可能にするには??
VLOOKUP関数で出たエラー値#N/Aを0にするには?
セルに入力したブック名でそのブックを開くには?

 

Excel VBA Macro