LOOKUP関数の使い方|以下で最大の値を探す・点数から評価・最後に入力された値・#N/Aの原因

LOOKUP関数の使い方|予算以下の最大の価格の商品を探す

LOOKUP関数は、検索値以下で一番大きい値を探して、同じ位置にある値を返す関数です。「予算以内で買える一番高い商品」や「点数から評価(A・B・C)」のように、区切りで探すときに便利です。

この記事では、LOOKUP 関数の使い方を、表の並べ方のルール、点数から評価を出す書き方、空欄を飛ばして最後に入力された値を取り出す使い方、#N/A になる原因まで、実際の Excel の画面で説明します。練習用のファイルも無料でダウンロードできます。

練習用Excelファイル(無料ダウンロード)
「予算」「評価」「最後の値」「よくある間違い」の4シートです。黄色のセルを書き換えて試せます。
Excelファイル(.xlsx)/登録不要/数式・練習データ入り
目次

LOOKUP関数の書き方(構文)

=LOOKUP(検索値, 検査範囲, 対応範囲)
引数意味
検索値探したい値(予算・点数など)
検査範囲探す範囲。小さい順(昇順)に並べておく
対応範囲返したい値の範囲。検査範囲と同じ大きさにする

同じ値が見つかればその位置、無ければ検索値以下で一番大きい値の位置の値を返します。完全に一致するものだけを探したいときは、VLOOKUP(FALSE)や XLOOKUP を使います。

基本の使い方:予算以内で一番高い商品を探す

価格を小さい順に並べた表(C5:C9)から、予算 10,000 以下で一番高い価格を探し、その商品名を返します。B2 に次の式を入れると、8,800 の「アイアン」になります。

=LOOKUP(A2,C5:C9,B5:B9)
エクセルのLOOKUP関数で予算以下で一番高い商品を探した例
エクセルのLOOKUP関数で予算以下で一番高い商品を探した例

試したところ、予算を 6,000 にすると 5,800 の「ウェッジ」、ちょうど 15,000 にすると「パター」、表の一番高い価格より大きい 50,000 にすると最後の「ドライバー」になりました。一番安い価格より小さい 3,000 にすると、該当が無いので #N/A になりました。

検査範囲と対応範囲は、表の1行目(5行目)から最後(9行目)までを同じように指定します。範囲の始まりがずれると、一番安い商品が探す対象から外れてしまいます。

点数から評価を出す(区切りを式の中に書く)

区切りの点数と評価を { } で式の中に書くと、表を作らずに評価を出せます。0〜59 点は D、60〜69 点は C、70〜79 点は B、80〜89 点は A、90 点以上は S です。75 点は B になりました。

=LOOKUP(A2,{0,60,70,80,90},{"D","C","B","A","S"})
エクセルのLOOKUP関数で点数から評価を出した例
エクセルのLOOKUP関数で点数から評価を出した例

区切りは小さい順に書きます。IF を重ねる書き方より短くなります(得点をA・B・C・Dに振り分ける方法(IF))。

空欄を飛ばして、最後に入力された値を取り出す

売上の列で、途中に空欄があっても、一番下に入力された値を取り出せます。試したところ、10/3 と 10/5 が空欄の表で 180(10/4 の売上)になりました。

=LOOKUP(2,1/(B2:B6<>""),B2:B6)
エクセルのLOOKUP関数で空欄を飛ばして最後に入力された値を取り出した例
エクセルのLOOKUP関数で空欄を飛ばして最後に入力された値を取り出した例

1/(B2:B6<>””) は、入力のあるセルが 1、空欄が #DIV/0! のエラーになります。LOOKUP はエラーを飛ばして探し、どの 1 よりも大きい 2 を探すので、最後の 1 の位置(最後に入力されたセル)の値を返します。日々データが増える表の「最新の値」を出すときに使えます。

よくある間違い

エクセルのLOOKUP関数で並べ替えていない表を探して#N/Aになる例
エクセルのLOOKUP関数で並べ替えていない表を探して#N/Aになる例

実際に試した、よくある間違いの例です。価格を並べ替えていない表で予算 10,000 を探すと、8,800 の商品があるのに #N/A になりました。LOOKUP は「小さい順に並んでいる」前提で探すので、並んでいないと正しい答えになりません。

症状考えられる原因対処
あるはずの値なのに #N/A・違う値になる検査範囲が小さい順に並んでいない検査範囲で小さい順に並べ替える。
#N/A になる検索値が検査範囲の一番小さい値より小さい一番小さい区切り(0 など)を先頭に入れる。
一番安い(小さい)ものが選ばれない範囲の始まりの行がずれて、1行目が外れている検査範囲・対応範囲とも表の1行目から指定する。
同じ値が無いのに近い値が返るLOOKUP は「以下で最大」を探す関数完全一致だけなら VLOOKUP(FALSE)・XLOOKUP を使う。

よくある質問

VLOOKUP・XLOOKUP との違いは?

LOOKUP は「以下で最大」を探す関数で、VLOOKUP の4つ目を TRUE にしたときと同じ探し方です。XLOOKUP なら5つ目を -1 にすると、並べ替えなしで同じ探し方ができます。試したところ、どれも予算 10,000 で「アイアン」になりました(XLOOKUP関数の使い方)。

文字でも探せますか?

探せます。文字は五十音順(あいうえお順)に並べておきます。試したところ、ぶどう・みかん・りんご の順に並べた範囲で「みかん」を探すと、2番目の値が返りました。

何番目にあるかだけを知りたいときは?

MATCH 関数の一致の種類を 1 にすると、同じ「以下で最大」の探し方で、位置の番号を返します(MATCH関数の使い方)。

練習用Excelファイル(無料ダウンロード)
この記事の例がすべて入った練習用のファイルです。
Excelファイル(.xlsx)/登録不要/数式・練習データ入り

あわせて読みたい:LOOKUP関数の関連記事

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

目次