ExcelのLOOKUP関数の使い方|VLOOKUPとの違い

スポンサーリンク

「引き継いだExcelファイルにLOOKUP関数が入っていたけど、VLOOKUPとどう違うの?」と戸惑った経験はありませんか。LOOKUPはVLOOKUPよりも古くからある検索関数です。今でも社内ファイルのなかで現役で動いています。ただ、引数の書き方がVLOOKUPと異なるため、初めて見ると読み解きにくいですよね。

この記事では、ExcelのLOOKUP関数の基本構文から、VLOOKUPやXLOOKUPとの違いまで解説します。「今さら覚える必要があるのか」という疑問にも最初に答えますよ。読み終えるころには、LOOKUP関数の数式を自信を持って読めるようになるはずです。

この記事は次のような人におすすめ
– 引き継いだファイルのLOOKUP関数を読み解きたい人
– VLOOKUPとLOOKUPの違いを整理したい人
– LOOKUP・VLOOKUP・XLOOKUPの使い分けを知りたい人

ExcelのLOOKUP関数とは:まず3関数の立ち位置を整理する

LOOKUP・VLOOKUP・XLOOKUPの違いを一言で

LOOKUP(ルックアップ)は「指定した値を検索して、対応する値を返す」関数です。名前の由来はそのまま「Look Up=探す」ですね。

Excelの検索関数にはLOOKUP・VLOOKUP・XLOOKUPの3つがあります。それぞれの位置づけを一言でまとめると次のとおりです。

  • LOOKUP: 最も古い検索関数。引数が少なくシンプルだが、近似一致しかできない
  • VLOOKUP: LOOKUPの後継。完全一致・近似一致を切り替えられる。全バージョン対応
  • XLOOKUP: 最新の検索関数。検索方向の制約がなく最も柔軟。Excel 2021/Microsoft 365以降

結論から言うと、新しい数式を書くならXLOOKUPかVLOOKUPがおすすめです。ただし古いファイルにLOOKUPが残っているケースは多いので、「読めるようにしておく」ことが大切ですよ。

LOOKUP関数はいつから存在するのか

LOOKUP関数はExcelの初期バージョンから搭載されている互換関数です。Excel 2016からMicrosoft 365まで、すべてのバージョンで使えます。

VLOOKUPやHLOOKUPが登場する前から存在しています。古い社内テンプレートや引き継ぎファイルでよく見かけますよ。「見たことない関数が入っている」と感じたら、このLOOKUPである可能性が高いです。

LOOKUP関数の書き方【ベクトル形式】

LOOKUP関数には「ベクトル形式」と「配列形式」の2種類があります。実務で使われるのはほとんどベクトル形式です。まずはこちらから解説しますね。

基本構文と3つの引数の意味

ベクトル形式の構文はこちらです。

=LOOKUP(検索値, 検索範囲, [結果範囲])

引数は最大3つです。VLOOKUPの4つに比べて少ないのが特徴です。

引数必須/省略可意味指定例
検索値必須探したい値A2
検索範囲必須検索する1行または1列の範囲B2:B10
結果範囲省略可結果を返す1行または1列の範囲C2:C10

VLOOKUPでは「表全体」を範囲に指定します。一方LOOKUPでは「検索する列」と「結果を返す列」を別々に指定します。この仕組みのおかげで、検索列が左端にない表でも使えるのがLOOKUPの利点です。

昇順ルールとは:昇順でないと正しい値が返らない理由

LOOKUP関数を使うとき、最も重要なルールが1つあります。検索範囲のデータは必ず昇順に並んでいなければなりません

VLOOKUPには「検索の型」という引数があります。完全一致(FALSE)と近似一致(TRUE)を選べます。しかしLOOKUP関数にはこの引数がありません。常に近似一致で動作します。

近似一致とは、検索値とぴったり一致する値がない場合に、検索値を超えない最大の値を返す仕組みです。この動作はデータが昇順に並んでいることが前提です。

昇順になっていないデータにLOOKUPを使うと、誤った値が返ることがあります。引き継いだファイルでLOOKUP関数を見かけたら、まず検索範囲が昇順かどうかを確認してみてください。

使用例:社員番号から氏名を取り出す

具体的な使い方を見てみましょう。次のような社員表があるとします。

A列(社員番号)B列(氏名)
1001田中太郎
1002佐藤花子
1003鈴木一郎
1004高橋美咲

社員番号1003の氏名を取り出すには、次のように書きます。

=LOOKUP(1003, A2:A5, B2:B5)

結果は「鈴木一郎」です。A列(検索範囲)が昇順に並んでいるので、正しく動作します。

もし社員番号1005(存在しない値)を検索するとどうなるでしょうか。

=LOOKUP(1005, A2:A5, B2:B5)

結果は「高橋美咲」です。1005を超えない最大値は1004なので、1004に対応する値が返ります。完全一致ではなく近似一致で動作する点に注意してくださいね。

LOOKUP関数の書き方【配列形式】

配列形式の構文(引数2つ)

LOOKUP関数にはもう一つ「配列形式」があります。引数は2つだけです。

=LOOKUP(検索値, 配列)
引数必須/省略可意味
検索値必須探したい値
配列必須検索と結果を含むセル範囲

配列形式では、指定した範囲の形状によって動作が変わります。

  • 縦長または正方形の範囲: 最初の列で検索し、最後の列の値を返す
  • 横長の範囲: 最初の行で検索し、最後の行の値を返す

配列形式が使われる場面と現在の推奨度

配列形式はVLOOKUPやHLOOKUPで代替できます。Microsoftも互換性維持のための形式と位置づけています。新しくこの形式を使う必要はほとんどありません。

古いファイルで引数が2つだけのLOOKUP関数を見かけたら、「配列形式だな」と判断できます。検索範囲と結果範囲が1つの配列にまとまっているだけです。やっていること自体はベクトル形式と同じですよ。

VLOOKUP・XLOOKUPと何が違うのか:3関数比較

LOOKUPとVLOOKUP、XLOOKUPの違いを表で整理しましょう。

比較項目LOOKUPVLOOKUPXLOOKUP
引数の数2〜3個4個(必須3)3〜6個
検索方向縦・横を自動判定縦方向のみ縦・横どちらも対応
一致モード近似一致のみ完全一致/近似一致を選択完全一致/近似一致/ワイルドカード等
検索列の制約なし(検索と結果を独立指定)検索列は範囲の左端のみなし(自由に指定可)
昇順必須常に必須近似一致(TRUE)のときだけ必須不要
対応バージョン全バージョン全バージョンExcel 2021/Microsoft 365
現在の推奨度低(読み取り用途)中(互換性が必要な環境)高(新規作成の第一候補)

LOOKUP近似一致 vs VLOOKUP近似一致(動作差分)

LOOKUPとVLOOKUP(第4引数TRUE)はどちらも近似一致で動作します。ただし使い勝手に違いがあります。

' LOOKUP — 検索の型を指定する引数がない(常に近似一致)
=LOOKUP(75, A2:A5, B2:B5)

' VLOOKUP — 第4引数TRUEで近似一致を明示
=VLOOKUP(75, A2:B5, 2, TRUE)

LOOKUPは「完全一致モードがない」のが最大の違いです。VLOOKUPなら第4引数をFALSEにすれば完全一致検索ができます。LOOKUPにはその切り替えがありません。

一方でLOOKUPには独自の利点もあります。検索範囲と結果範囲を別々に指定できるので、検索列が左端にない表でも対応できます。VLOOKUPの「検索列が左端になければ使えない」という制約に縛られません。

それぞれの関数について詳しく知りたい方は、以下の記事も参考にしてみてください。

LOOKUP関数が今でも使われている場面

「わざわざLOOKUPを使う場面なんてあるの?」と思うかもしれません。実は、近似一致の特性を活かしたランク判定で今でも使われているケースがあります。

近似一致ランク判定の実例:評価区分を昇順マスタで自動判定

テストの点数に応じてA〜Dの評価をつけたい場面を考えてみましょう。次のような基準表を用意します。

D列(点数の下限)E列(評価)
0D
60C
70B
80A

点数が75のとき、評価を自動で判定する数式がこちらです。

=LOOKUP(75, D2:D5, E2:E5)

結果は「B」です。75は70以上80未満なので、70に対応する「B」が返ります。

この数式が動く仕組みは、LOOKUP関数の近似一致です。検索値75を超えない最大値(70)を見つけて、対応する結果を返しています。

同じことはVLOOKUP(75, D2:E5, 2, TRUE)でも実現できます。ただしLOOKUPは検索列と結果列を独立して指定できるので、基準表のレイアウトを自由に組めますよ。古いファイルでこのパターンを見かけたら、「ランク判定をしているんだな」と読み解けるはずです。

よくあるエラーと対処法

#N/Aエラーの原因と対処

LOOKUP関数で最も多いエラーが#N/Aです。主な原因は次の2つです。

  • 検索値が検索範囲の最小値より小さい: 検索範囲が{60, 70, 80}のとき、検索値30を指定すると#N/Aになります。近似一致では「検索値を超えない最大値」を探しますが、最小値60より小さい値には候補がないためです
  • 検索範囲が空、または指定が間違っている: 範囲の指定ミスで空のセルを参照しているケースも原因になります

対処法としては、検索範囲の先頭に十分小さい値を追加しておくと安心です。

' 検索範囲の先頭に0を追加してエラーを防ぐ
=LOOKUP(30, {0,60,70,80}, {"対象外","C","B","A"})

想定外の近似値が返るケース:昇順ルール違反

「エラーは出ないけど、返ってくる値がおかしい」というケースもあります。ほとんどの場合、検索範囲が昇順に並んでいないことが原因です。

LOOKUP関数はバイナリサーチ(二分探索)という方法でデータを検索します。昇順を前提としたアルゴリズムです。データの順序が乱れると、検索の途中で間違った位置を見てしまいます。

対処法は次の2つです。

  • 検索範囲のデータを昇順に並べ替える
  • 完全一致が必要な場合はVLOOKUP(第4引数FALSE)やXLOOKUPに書き換える

引き継いだファイルで結果がおかしいと感じたら、まず検索範囲のソート順を確認してみてください。

まとめ:今から書くならXLOOKUP、古いファイルはLOOKUPで読む

この記事のポイントを整理しておきましょう。

  • LOOKUP関数はExcelの初期から搭載されている検索関数。引数は2〜3個でシンプル
  • ベクトル形式(検索範囲と結果範囲を別々に指定)が実務の主流
  • 常に近似一致で動作するため、検索範囲は必ず昇順に並べておく
  • VLOOKUPとの最大の違いは「完全一致モードがないこと」と「検索列の位置が自由なこと」
  • 新しく数式を書くならXLOOKUPが最適。LOOKUPは「古いファイルを読み解くため」に知っておくと安心

LOOKUP関数を新規で使う場面は限られます。ただし引き継いだファイルに入っていることは珍しくありません。この記事で解説した構文と近似一致の動作を押さえておけば、いざというときに慌てずに対応できますよ。

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