LOOKUP関数の使い方!IFより簡単な条件分岐

LOOKUP関数の使い方!IFより簡単な条件分岐 Excel

本記事では、OSを問わず誰でも無料で利用できる「Web版Excel」を使用して検証および画像の作成を行っています。

【今だからこそ】Excelの「忘れられた秘宝」LOOKUP関数を使いこなす!XLOOKUP時代に学ぶべき本質

「Excelでデータを検索するなら、最新のXLOOKUPが最強でしょ?そうでなくても、定番のVLOOKUPがあれば十分じゃないか。」

そう思ったあなた、その通り!

ほとんどの場合、XLOOKUPVLOOKUPは非常に便利で、私たちの期待に完璧に応えてくれる、強力な関数です。

しかし、Excelの世界には、普段は光の当たらない「忘れ去られた」あるいは「見過ごされている」関数の中に、驚くべき奥深さと汎用性を秘めた「秘宝」が存在します。

その名も、LOOKUP関数

「なぜ今、あえてそんな古い関数を学ぶ必要があるの?」

それは、この関数を探求する旅が、単に一つの機能を知るだけでなく、Excelの関数が持つ「本質」や、その裏側にある「思考プロセス」を、より深く理解するための、最高の近道だからです。

まさに「真剣な暇つぶし」の精神で、Excelの古き良き知恵の扉を開けてみましょう!

STEP1:LOOKUP関数の「基本」と「配列定数」

互換性最強!どのExcelでも動く「普遍の関数」

まず、LOOKUP関数が持つ、他のどの検索関数にもない圧倒的な強み。それは「互換性」です。

LOOKUP関数は、Excelの最も古い歴史を持つ関数の一つです。

そのため、Excel 20102007、あるいはそれ以前のバージョンでも、何の問題もなく動作します。

それだけではありません。

GoogleスプレッドシートやLibreOffice Calcといった、Excel以外の主要な表計算ソフトでも、ほぼ同じように機能します。

不特定多数の人とファイルを共有する際に、「相手の環境で関数が使えなかったらどうしよう…」という心配が一切ない。これは、実務において非常に大きなメリットと言えるでしょう。

「配列定数」とは?数式内に表を作るテクニック

後のセクションで解説する数式を理解するために、まず「配列定数(はいれつていすう)」という概念を説明します。

これは、{0,40,60,80}のように、数式の中に波括弧{}で囲んで、数値や文字列を直接書き込むことで、数式内に仮想的な「表(配列)」を作り出すテクニックです。

  • カンマ,で区切ると、横方向の配列(行)になります。
  • セミコロン;で区切ると、縦方向の配列(列)になります。

わざわざシート上に参照表を作らなくても、数式内で完結させることができる、非常にスマートな方法です。

Excelの説明画像
Excelの説明画像

STEP2:LOOKUP関数の真骨頂!美しい「段階評価」

「点数に応じて、S, A, B, C の評価を付けたいんだけど、IF関数を何回も入れ子にするのは、数式が長くなって大変…」

そんな時こそ、LOOKUP関数の出番です!

この関数の最大の特徴である「近似一致」を正しく使えば、IFのネストよりも遥かにシンプルに、美しい条件分岐を記述できるのです。

テクニック:しきい値(閾値)で判定する条件分岐

=LOOKUP(B2,{0,40,60,80},{"C","B","A","S"})

例えば、下の画像のようにC2セルに上記の数式を入れ、
C6セルまでコピーします。

Excelの説明画像

数式の挙動を徹底解剖!

この数式は、2つの「配列定数」を巧みに対応させています。

  • 検査範囲: {0,40,60,80} … 条件の「しきい値」となる数値を、昇順で並べます。
  • 対応範囲: {"C","B","A","S"} … それぞれのしきい値に対応する結果を並べます。

LOOKUP関数は、検索値である点数(例: B2セル)を、検査範囲の中から探します。

そして、「検索値以下の最大値」を見つけ、それに対応する位置の値を返すのです。

  • 点数が12の場合 → 12以下の最大値は0 → 0に対応する「C」を返す。
  • 点数が52の場合 → 52以下の最大値は40 → 40に対応する「B」を返す。
  • 点数が75の場合 → 75以下の最大値は60 → 60に対応する「A」を返す。
  • 点数が100の場合 → 100以下の最大値は80 → 80に対応する「S」を返す。

IF関数を何重にも重ねるよりも、遥かに直感的で、修正も簡単だと思いませんか?

IF関数の場合:
=IF(B2>=80,”S”,IF(B2>=60,”A”,IF(B2>=40,”B”,”C”)))

IFS関数の場合:
=IFS(B2>=80,”S”,B2>=60,”A”,B2>=40,”B”,TRUE,”C”)

STEP3:裏ワザ!LOOKUPで「厳密検索(完全一致)」

近似一致が便利なのは分かったけど、やっぱりVLOOKUPみたいに、ピッタリ同じ値を探したい時もある。そんな時は使えないの?」

そう思いますよね。

しかし、Excelの関数の世界では、関数の「仕様」を逆手に取ることで、本来持っていないはずの機能を実現できてしまうことがあるのです!

テクニック:エラーを巧みに利用する「厳密検索」

=LOOKUP(1,1/(検査範囲=検索値),対応範囲)

Excelの説明画像

数式の挙動を徹底解剖!

この数式の核心は、1/(検査範囲=検索値)という、一見すると意味不明な部分にあります。

これを順番に見ていきましょう。

検索範囲=検索値

まず、この部分が評価され、検索範囲の各セルが検索値と一致するかどうかを判定し、TRUEFALSEの配列を返します。

(例: {FALSE;TRUE;TRUE;FALSE;…})

Excelの説明画像

1/(TRUE/FALSEの配列)

次に、1を先ほどの配列で割ります。Excelは計算時、TRUEを1、FALSEを0として扱います。

すると…
1/TRUE → 1/1 → 1
1/FALSE → 1/0 → #DIV/0! (ゼロ除算エラー)

結果として、配列は{#DIV/0!;#DIV/0!;1;#DIV/0!;…}のように、1とエラー値が混在したものになります。

Excelの説明画像

LOOKUP(1, [1とエラーの配列], ...)

最後に、LOOKUP関数がこの不思議な配列を検索します。

ここでLOOKUP関数の、2つの重要な特性が発動します。

  1. 検索値より大きい値と、エラー値を無視する
  2. 検索範囲の中から、検索値(今回は1)以下で、かつ「最後に」現れる数値を探す

これにより、LOOKUP関数は大量のエラー値を無視し、配列の中で最後に登場した1の位置を特定します。

この位置こそが、探していた「検索値」と一致する場所なのです!

どうでしょう!エラー値を意図的に発生させ、それを無視するというLOOKUP関数の特性を逆手に取ることで、見事に「完全一致」検索を実現してしまいました。

STEP4:LOOKUP関数の「限界」を知る

ここまでLOOKUP関数の素晴らしい点を紹介してきましたが、もちろん万能ではありません。

こういう時は、素直に他の関数を使いましょう」という限界点も知っておくことが、真のExcel使いへの道です。

限界①:降順の検索ができない

LOOKUP関数の近似一致が正しく機能するためには、検査範囲(しきい値の配列)が昇順に並んでいる必要があります。

降順のデータに対しては、意図しない結果を返すことがあるので注意が必要です。

Excelの説明画像

限界②:2次元の表(縦横検索)は不可能

LOOKUP関数が検索できるのは、1行または1列の「ベクトル範囲」のみです。

もし、「商品名」と「月」の2つの条件から、対応する売上をマトリクス表から引き出したい、といった2次元の検索を行いたい場合、LOOKUP関数では対応できません。

そんな時は、INDEX関数とMATCH関数の組み合わせの出番です。
これは、Excelにおける2次元検索の王道テクニックであり、VLOOKUPの限界をも超える、非常に強力な方法です。(この解説は、また別の機会に!)

Excelの説明画像

まとめ:なぜ今、LOOKUPを学ぶべきなのか?

ここまで読んでくださったあなたは、もうLOOKUP関数が、ただの古い関数ではないことを実感しているはずです。

今回学んだのは、単なるLOOKUP関数の使い方ではありません。

Excelが内部でどのようにデータを処理し、配列やエラー値を扱っているかという、関数の「根源的な挙動」を学んだのです。

この深い理解は、最新のXLOOKUP関数を使いこなす上でも、予期せぬエラーに遭遇した際のデバッグ能力にも、間違いなく繋がります。
古い関数から、新しい技術を使いこなすための「本質」を学ぶ。これこそが、Excelの面白さなのです。

「暇つぶし」の精神で、古き良きExcelの知恵を探求する面白さを、感じていただけたでしょうか。

今日からLOOKUP関数を使ってみたくなるような、思考のヒントがここにあります。

ぜひ、実際にこれらのテクニックを、あなたのExcelで試してみてください!

タイトルとURLをコピーしました