LOOKUP関数は、検索値以下で一番大きい値を探して、同じ位置にある値を返す関数です。「予算以内で買える一番高い商品」や「点数から評価(A・B・C)」のように、区切りで探すときに便利です。
この記事では、LOOKUP 関数の使い方を、表の並べ方のルール、点数から評価を出す書き方、空欄を飛ばして最後に入力された値を取り出す使い方、#N/A になる原因まで、実際の Excel の画面で説明します。練習用のファイルも無料でダウンロードできます。
LOOKUP関数の書き方(構文)
=LOOKUP(検索値, 検査範囲, 対応範囲)
| 引数 | 意味 |
|---|---|
| 検索値 | 探したい値(予算・点数など) |
| 検査範囲 | 探す範囲。小さい順(昇順)に並べておく |
| 対応範囲 | 返したい値の範囲。検査範囲と同じ大きさにする |
同じ値が見つかればその位置、無ければ検索値以下で一番大きい値の位置の値を返します。完全に一致するものだけを探したいときは、VLOOKUP(FALSE)や XLOOKUP を使います。
基本の使い方:予算以内で一番高い商品を探す
価格を小さい順に並べた表(C5:C9)から、予算 10,000 以下で一番高い価格を探し、その商品名を返します。B2 に次の式を入れると、8,800 の「アイアン」になります。
=LOOKUP(A2,C5:C9,B5:B9)

試したところ、予算を 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"})

区切りは小さい順に書きます。IF を重ねる書き方より短くなります(得点をA・B・C・Dに振り分ける方法(IF))。
空欄を飛ばして、最後に入力された値を取り出す
売上の列で、途中に空欄があっても、一番下に入力された値を取り出せます。試したところ、10/3 と 10/5 が空欄の表で 180(10/4 の売上)になりました。
=LOOKUP(2,1/(B2:B6<>""),B2:B6)

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

実際に試した、よくある間違いの例です。価格を並べ替えていない表で予算 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関数の使い方)。
