いまさら聞けないExcelの使い方講座

【Excel】数値範囲に対応する値を探すなら……「V」でも「X」でもない「LOOKUP関数」が簡単

範囲内に収まるかどうかを判断して対応する値を取り出すには?

地味だけど、たまには役立つ「LOOKUP関数」

 表内にある値を検索して対応する値を取り出す場合、「VLOOKUP関数」や「XLOOKUP関数」がよく使われます。単純にマスターデータを検索・参照する場合や、一覧表に埋め込む場合など、いろいろな場面で利用できます。

 では、以下のような表で年間利用額に応じたランク付けをしたい場合はどのようにしたらいいでしょうか? 例えば、30,000以上~50,000未満の利用額なら「B」ランクといった具合です。

年間利用額に応じて、ランク付けしたい場合はどうしましょう?

 もちろん、VLOOKUP / XLOOKUP関数でも処理は可能です。セルD2に入力する数式は以下のようになります。「0~30,000」「30,000~50,000」といった範囲に収まるかをどのように判断するかがポイントです。

=VLOOKUP(C2,$F$2:$G$5,2,TRUE)

=XLOOKUP(C2,$F$2:$F$5,$G$2:$G$5,,-1)

 VLOOKUP関数の4つ目の引数[検索方法]には“近似一致”を表す「TRUE」を指定します(省略可)。また、参照する値(セルF2~F5)は昇順で並べ替えておきます。XLOOKUP関数の場合は、5つ目の引数[一致モード]に「-1」(完全一致または次に小さい項目)を指定します。ここでは、4つ目の引数[見つからない場合]を省略しています。

 いつもの“完全一致”で指定する数式とは異なるので、少し難しく感じますよね。このような場合は「LOOKUP関数」を思い出してください。

LOOKUP関数の構文

 LOOKUP関数は、引数[検査値]を[検査範囲]から探して[対応範囲]にある値を取り出します。引数の指定方法には、ベクトル形式と配列形式の2種類がありますが、実務ではほとんどベクトル形式しか使われません。

LOOKUP関数の構文。引数[検査値]を[検査範囲]から探して[対応範囲]にある値を取り出します。[検査範囲]は昇順に並べ替えておく必要があります。

 [検査範囲]と[対応範囲]のセル範囲の行数を揃えておくこと、[検査範囲]は昇順に並べ替えておくことが必要になります。

LOOKUP関数を入力する

 基準となるセル範囲(検査範囲)は、「上限」ではなく「下限」として定義されている点が重要です。例えば、30,000以上が「B」です。[検査値]以下の最大値を検索するので、ランク付けのような「範囲に応じた分類」に適しています。

 VLOOKUP / XLOOKUP関数のように“近似一致”の指定に迷う必要がないため、LOOKUP関数の方がシンプルで読みやすく、範囲に応じた分類にはぴったりです。

セルD2に「=LOOKUP(C2,$F$2:$F$5,$G$2:$G$5)」と入力します(①)
オートフィルでコピーしました

 なお、スピルを使って以下のような数式を入力すると、オートフィルでコピーする必要もありません。旧来からあるLOOKUP関数は、VLOOKUP / XLOOKUP関数と比較すると地味ですが、「範囲に応じた分類」においては今も現役です。必要なときに思い出せるようにしておきたいですね。

=LOOKUP(C2:C101,$F$2:$F$5,$G$2:$G$5)

セルD2に「=LOOKUP(C2:C101,$F$2:$F$5,$G$2:$G$5)」(②)と入力すると、結果はスピルで表示されます