Excelの関数の代表格「VLOOKUP関数」は確かによく使われ、それの使い方を紹介するネット記事も多く、このブログ記事の中でも「Excel VLOOKUP関数(1)」記事をはじめ、幾度となくご紹介してきました。
でも、その基本とも言える「LOOKUP関数」については、紹介することも少なかったのですが、とてもシンプルな使い方ができる便利な関数ですので、今回はこれを取り上げてみます。

「LOOKUP関数」は、複数のセルから目的の値を探すのに使われます。

例示しながら、その動作をご紹介します。

「LOOKUP」には、ベクトル形式と配列形式の 2種類の使い方があります。

(1) ベクトル形式での書式

1行または1列のみのセル範囲(ベクトル)で値を検索し、値が見つかると範囲の指定の行または列の同じ位置にある値を返します。

その書式は、次のようになります:
  LOOKUP(検査値, 検査範囲, [対応範囲])

第2引数の「検査範囲(ベクトル)」で指定したセル範囲の中に、第1引数「検査値」を検索します。
見つかれば、それに対応する第3引数「対応範囲」の値を返します。
第2引数の「検査範囲」と第3引数「対応範囲」の長さは同じでなくてはいけません。

下図のような「郵便番号」というテーブルについて、「郵便番号」列の「124-0012」に対応する「市区町村」列の値を求めてみます。(下図)

 

LOOKUPの第1引数に検索値「124-0012」、第2引数に「郵便番号」列のデータ範囲、第3引数に「市区町村」列のデータ範囲を指定すると、「葛飾区立石」と返されます。

第1引数「検査値」には、数値、文字列、論理値、または値を参照する名前やセル参照を指定できます。
第2引数「検査範囲」には、文字列、数値、または論理値からなる 1行または 1列のみのセル範囲を指定できます。
この「検査範囲」の値は、“昇順”に並べておく必要があり、そうでないと正しい値を返さない可能性があります。
第3引数「対応範囲」は省略可能で、省略したときは第2引数「検査範囲」が適用されます。

なお、この例ではテーブルとした表データを使いましたが、テーブル化していない単なる範囲データでも構いません。

また、「検査値」が「検査範囲」で見つからなかったときは、その範囲の最大値、つまり一番下の値が返されます。
例えば「=LOOKUP("224-0012",郵便番号[郵便番号],郵便番号[市区町村])」というように存在しない「224-0012」という検査値で検索させると、表データの一番下にある「葛飾区白鳥」が返されます。
ただし、「=LOOKUP("024-0012",郵便番号[郵便番号],郵便番号[市区町村])」というように、「検査範囲」の最小値より小さい値を検査値としたときはエラー値「#N/A」が返されます。

同じ表データについて、別の検索をしてみます。
「日本人」列の数値データ範囲を「検査範囲」とし、人口 5,000人以下で最大の値をもつ「市区町村」を検索してみます。
「日本人」列を昇順で並び替えてから、「=LOOKUP(5000,郵便番号[日本人],郵便番号[市区町村])」とすれば「葛飾区東水元」と返されます。(下図)

 

「葛飾区東水元」の人口が 5,000人以下で最大の値となっています。

(2) 配列形式での書式

配列の最初の行または列で指定された値を検索し、値が見つかると、配列の最後の行または列の同じ位置にある値を返します。

その書式は、次のようになります:
  LOOKUP(検査値, 配列)

上の表データで試してみます。
「日本人」列を昇順で並び替えてから、あるセルに「=LOOKUP(5000,郵便番号[日本人])」とすると「4193」と返されます。(下図)

 

「日本人」列の数値データが、5,000以下で最大の値をもつものを返します。

もし、「日本人」データの最大値よりも大きな値で検索したときは、数値データの最大値、つまり数値セル範囲の一番下の値が返されます。
また、データの最小値より小さい値で検索したときは、エラー値「#N/A」が返されます。

このように、シンプルな検索をする関数ですが、一番有効な使い方としては、最初の例で使ったように第2引数の「検査範囲」が表データの一番左の列ではなく、そして第3引数「対応範囲」がそれよりも左にあるような表データについて検索するところでしょうか。
定番の「VLOOKUP関数」では、検査範囲は表データの左端の列であって、対応範囲はその右側の列という縛りがありました。
「LOOKUP関数」にはそのような制約がないので、表データを作り直す必要もなく、シンプルに使えます。
難点は、「検査範囲」のデータを昇順に並び替えなくてはいけないという点でしょうか。

Microsoftのサポートページ「LOOKUP関数」もご参照ください。