スプレッドシートのLOOKUP関数の使い方|VLOOKUPとの違いも解説

スポンサーリンク

「1行だけの表からデータを引きたい」「VLOOKUPほど大げさな関数を使うまでもない」。スプレッドシートで検索をするとき、こんな場面はありませんか。

VLOOKUP関数HLOOKUP関数は便利ですが、引数が多くて構文もやや長めです。もっとシンプルに書きたいときがありますよね。

そんなときに使えるのがLOOKUP関数です。1行または1列の範囲をサッと検索して、対応する値を返してくれます。この記事ではスプレッドシートのLOOKUP関数の基本から、VLOOKUPとの違い・使い分け・よくある質問までわかりやすく紹介します。

スプレッドシートのLOOKUP関数とは?

LOOKUP関数(読み方:ルックアップ関数)は、1行または1列の範囲を検索して対応する値を返す関数です。関数名は英語の「Lookup(検索・照合する)」がそのまま由来になっています。

VLOOKUP関数が「縦方向(Vertical)の表検索」、HLOOKUP関数が「横方向(Horizontal)の表検索」に特化しています。一方、LOOKUP関数は1行/1列のシンプルな範囲を検索するのが特徴です。

LOOKUP関数にできることをまとめると、次のとおりです。

  • 1列のデータから対応する値を取得する
  • 1行のデータから対応する値を取得する
  • 近似一致でランク判定や料金区分を行う
  • 検索方向(縦・横)を意識せずに書ける

検索範囲が小さい場面では、VLOOKUPより短い数式で済むのがメリットですよ。

NOTE

LOOKUP関数はGoogleスプレッドシートの全バージョンで使えます。Excelとの互換性も完全なので、ファイルのやり取りでも安心です。

LOOKUP関数の書き方(構文と引数)

LOOKUP関数には2つの書き方があります。実務でよく使うのは「ベクトル形式」です。

ベクトル形式(基本)

=LOOKUP(検索キー, 検索範囲, 結果範囲)

検索範囲から検索キーを探し、結果範囲の同じ位置にある値を返します。VLOOKUPの「列番号」の代わりに、結果範囲を直接指定するイメージです。

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

配列形式

=LOOKUP(検索キー, 配列)

配列(複数行×複数列の範囲)の最初の行または列を検索し、最後の行または列の対応する値を返します。

引数必須/省略可意味指定例
検索キー必須探したい値A2
配列必須複数行×複数列の範囲B2:D10

配列の形によって検索方向が自動で切り替わります。

  • 列数 > 行数: 最初の行を横方向に検索 → 最後の行の値を返す
  • 行数 >= 列数: 最初の列を縦方向に検索 → 最後の列の値を返す

WARNING

LOOKUP関数は近似一致で検索します。検索範囲は昇順に並べ替え済みであることが前提です。完全一致で検索したい場合はVLOOKUP関数(第4引数にFALSE)を使ってください。

LOOKUP関数の基本的な使い方

商品コードから商品名を取得する例で見てみましょう。

A列に商品コード(昇順)、B列に商品名が並んでいるとします。D2に入力したコードから商品名を取得するにはこう書きます。

=LOOKUP(D2, A2:A10, B2:B10)

各引数の意味は次のとおりです。

  • D2: 検索キー(入力した商品コード)
  • A2:A10: 検索範囲(商品コードの列)
  • B2:B10: 結果範囲(商品名の列)

D2に「P-003」と入力すると、A列から「P-003」以下の最大値を探します。そして同じ行のB列の値を返してくれます。

配列形式で書くと、さらに短くなります。

=LOOKUP(D2, A2:B10)

A2:B10の最初の列(A列)を検索し、最後の列(B列)の値を返します。結果は同じですが、引数が1つ減ってスッキリしますよ。

NOTE

検索範囲が昇順でないと、正しい結果が返りません。データを事前に並べ替えておくか、VLOOKUP関数(完全一致)を使いましょう。

LOOKUP関数の実践的な使い方・応用例

成績ランク判定(近似一致の活用)

LOOKUP関数の近似一致は、スコアに応じたランク判定で力を発揮します。

F列に境界値(昇順)、G列にランクを用意します。

F列(境界値)G列(ランク)
0D
60C
70B
80A
90S

点数が入ったB2セルからランクを判定するにはこう書きます。

=LOOKUP(B2, F2:F6, G2:G6)

B2が「75」なら、F列から75以下の最大値「70」を見つけます。そして対応するG列の「B」を返してくれます。

VLOOKUPで同じことをするには =VLOOKUP(B2, F2:G6, 2, TRUE) と書きます。LOOKUP関数のほうが引数が少なくて直感的ですね。

送料区分の自動判定

ECサイトの管理シートなどで、注文金額に応じた送料を自動判定する場面にも使えます。

H列(金額の境界値)I列(送料)
0800
3000500
5000300
100000

注文金額がC2セルに入っているとき、送料を求めるにはこう書きます。

=LOOKUP(C2, H2:H5, I2:I5)

C2が「4500」なら、H列から4500以下の最大値「3000」を見つけます。対応するI列の「500」(送料500円)が返ります。IF関数をネストして書くより、はるかにシンプルですよ。

IFERROR関数と組み合わせてエラーを防ぐ

LOOKUP関数は検索キーが検索範囲の最小値より小さいと#N/Aエラーを返します。IFERROR関数で囲めば、エラー時に代わりの値を表示できます。

=IFERROR(LOOKUP(D2, A2:A10, B2:B10), "該当なし")

実務では「該当なし」や空文字「””」を指定するケースが多いです。検索系の数式には、IFERRORをセットで使う習慣をつけておくと安心ですよ。

別シートのデータを検索する

検索先が別シートにある場合は、シート名のあとに「!」をつけます。

=LOOKUP(A2, マスタ!B:B, マスタ!C:C)

シート名に空白を含む場合はシングルクォーテーションで囲みます。

=LOOKUP(A2, '商品 マスタ'!B:B, '商品 マスタ'!C:C)

別シートの範囲をマウスで選択すると、シート名と「!」が自動で入力されます。手入力よりもミスが減るのでおすすめです。

NOTE

別シートを参照する検索は、VLOOKUP関数でも同じ書き方です。マスタテーブルを別シートに置いて管理するのは、スプレッドシートの定番パターンですよ。

最後に一致した値を取得する

LOOKUP関数には「検索キー以下の最大値を返す」という特性があります。これを利用すると、重複データの中から最後に一致した値を取得できます。

たとえばA列に担当者名、B列に対応日付が並んでいるとします。担当者「田中」の最新の対応日付を取得するにはこう書きます。

=LOOKUP(2, 1/(A2:A100="田中"), B2:B100)

ちょっとむずかしく見えますが、やっていることはシンプルです。

  • A2:A100="田中" → 条件に一致するセルはTRUE(1)、それ以外はFALSE(0)
  • 1/TRUE → 1、1/FALSE → エラー(ゼロ除算)
  • LOOKUP関数はエラーをスキップして、最後の「1」の位置に対応するB列の値を返す

この使い方はVLOOKUPでは実現できません。LOOKUP関数ならではのテクニックです。特定の条件に合う最新データを取り出したいときに重宝しますよ。

担当者ごとの最新ステータスを取り出す

「最後に一致した値を取得する」テクニックは、進捗管理シートでも便利です。A列に担当者、B列にステータス(着手前/対応中/完了)が時系列で並んでいるとします。

担当者「鈴木」の最新ステータスを取り出すにはこう書きます。

=LOOKUP(2, 1/(A2:A100="鈴木"), B2:B100)

新しい行が下に追加されていく前提の表なら、ピボットテーブルを作らなくても1行の数式で最新値が拾えます。日々のデータ更新が多い管理シートで重宝するテクニックですよ。

よくあるエラーと対処法

LOOKUP関数で発生しやすいエラーをまとめます。

エラー原因対処法
#N/A検索キーが検索範囲の最小値より小さいデータを確認するか、IFERRORで囲む
#N/A検索範囲が昇順でない検索範囲を昇順に並べ替える
#REF!検索範囲と結果範囲のサイズが異なる両方の範囲を同じ行数(または列数)に揃える
#VALUE!検索キーが空白検索キーのセルにデータを入力する
間違った値が返る検索範囲が昇順でない昇順に並べ替えるか、VLOOKUPの完全一致を使う

一番多いミス: 検索範囲が昇順でない

LOOKUP関数でもっとも多いトラブルが「検索範囲が昇順になっていない」ケースです。近似一致専用の関数なので、昇順でないと間違った値を返すことがあります

厄介なのは、エラーにならず誤った結果が返る場合があること。見た目上は正常に動いているように見えるため、気づきにくい点に注意してください。

対処法は2つあります。

  1. 検索範囲を昇順に並べ替える: データ入力時にルール化しておくのがおすすめです
  2. 完全一致の関数に切り替える: 以下の関数を使いましょう
  • 1列の表を縦方向に検索VLOOKUP関数(第4引数にFALSE)
  • 1行の表を横方向に検索HLOOKUP関数(第4引数にFALSE)
  • 方向を問わず柔軟に検索XLOOKUP関数

LOOKUP関数とVLOOKUP関数の違いを徹底比較

「LOOKUPとVLOOKUPはどう違うの?」という疑問は、検索関数を学び始めた方からよく聞かれます。両者の違いを4つの観点で整理します。

違い1: 検索方向の柔軟性

VLOOKUP関数縦方向(列方向)の検索専用です。一方、LOOKUP関数は1行でも1列でも検索できます。

配列形式を使えば、検索範囲の形に応じて方向が自動で切り替わるのが特徴です。横方向のデータを検索したい場合、VLOOKUPでは対応できません。LOOKUP関数なら範囲指定を変えるだけでOKです。

違い2: 完全一致と近似一致

VLOOKUPは第4引数で完全一致(FALSE)近似一致(TRUE)を選べます。商品コードや社員番号のような「ピッタリ一致するものだけを探したい」場面に向いています。

LOOKUP関数は近似一致のみです。検索キーと完全に一致しなくても、検索キー以下の最大値を返します。「○○以上△△未満」の区間判定が得意な反面、完全一致が必要な場面では使えません。

違い3: 結果の指定方法

=LOOKUP(D2, A2:A10, C2:C10)
=VLOOKUP(D2, A2:C10, 3, FALSE)

LOOKUPは結果範囲(C2:C10)を直接指定します。VLOOKUPは検索範囲全体(A2:C10)を指定して、3列目を番号で指定します。

列の挿入・削除があったとき、VLOOKUPは列番号がずれるリスクがあります。LOOKUPは結果範囲を直接指定するので、列の増減に強いのがメリットです。

違い4: 並べ替えの必要性

LOOKUPは近似一致専用のため、検索範囲を昇順に並べ替えておく必要があります。データの順序がそのまま結果に影響します。

VLOOKUPは完全一致(FALSE)を指定すれば、検索範囲が並べ替えられていなくても正しい結果を返します。実務では完全一致が基本なので、この点はVLOOKUPの大きなメリットです。

検索関数の比較表(HLOOKUP・XLOOKUPも含む)

スプレッドシートには検索関数が複数あります。「どれを使えばいいの?」と迷う方も多いですよね。それぞれの特徴を比較表で整理します。

特徴LOOKUPVLOOKUPHLOOKUPXLOOKUP
検索方向1行/1列(自動判定)縦方向のみ横方向のみ縦・横どちらも可
一致方式近似一致のみ完全一致/近似一致完全一致/近似一致完全一致/近似一致
結果の指定方法結果範囲を直接指定列番号で指定行番号で指定戻り範囲を直接指定
左方向・上方向の検索可能(範囲指定次第)不可不可可能
エラー時の既定値IFERROR必要IFERROR必要IFERROR必要引数で指定可
複数列を一括で返す不可不可不可可能
数式の長さ短い普通普通やや長い
並べ替えの前提必要(昇順)FALSEなら不要FALSEなら不要不要

どの関数を選べばいい? 判断フロー

検索関数を選ぶときは、次の順番で考えるとスムーズです。

ステップ1: 完全一致か近似一致か?

まず「探している値とピッタリ一致するものを見つけたいか」を考えます。商品コードや社員番号など、一致するものだけを探したい場合は完全一致です。実務の9割はこちらに該当します。

完全一致なら → VLOOKUP関数(第4引数にFALSE)が最も一般的です。

ステップ2: 近似一致ならLOOKUP関数

ランク判定や料金区分など「○○以上△△未満」の区間で判定したい場合は近似一致です。LOOKUP関数の出番ですよ。

ステップ3: 特殊な要件があるか?

LOOKUP関数のよくある質問(FAQ)

Q1. LOOKUP関数とVLOOKUP関数のどちらを覚えればいいですか?

実務でまず覚えるべきはVLOOKUP関数です。完全一致で検索できるので、商品コードや社員番号といったID検索の場面で使えます。

LOOKUP関数は「近似一致でランクや区分を判定する」という特定の場面に強い関数です。VLOOKUPに慣れてから、必要に応じて使い分けていけば十分ですよ。

Q2. LOOKUP関数は廃止予定の関数ですか?

廃止予定ではありません。LOOKUP関数はGoogleスプレッドシート・Excel双方で標準サポートされており、引き続き利用できます。

ただし、より柔軟なXLOOKUP関数が登場した現在、新規にデータ参照を組むなら XLOOKUP を選ぶ方がメリットが多いケースもあります。既存シートの保守ではLOOKUPをそのまま使い、新規ならXLOOKUPを検討する、という使い分けがおすすめです。

Q3. LOOKUP関数で完全一致の検索はできますか?

LOOKUP関数だけでは完全一致は実現できません。LOOKUPは構造上、近似一致専用の関数です。

完全一致で検索したい場合は、VLOOKUP関数HLOOKUP関数XLOOKUP関数のいずれかを使ってください。これらは引数で完全一致を指定できます。

Q4. LOOKUP関数で大文字・小文字を区別できますか?

LOOKUP関数は大文字・小文字を区別しません。「APPLE」と「apple」は同じ値として扱われます。

大文字・小文字を区別して検索したい場合は、別途EXACT関数などを組み合わせる方法があります。区別が必要な場面はあまり多くありませんが、システムIDなど大文字小文字に意味があるデータでは注意しましょう。

Q5. 検索範囲が並べ替えできない場合はどうすればいいですか?

並べ替えができない(元データを並び替えたくない)場合は、LOOKUP関数の使用は避けましょう。代わりにVLOOKUP関数(完全一致FALSE)やXLOOKUP関数を使うのがおすすめです。

これらは並べ替え不要で正しく動作します。元の表の並びを保ったまま検索したいときに重宝しますよ。

Q6. ExcelのLOOKUP関数と同じように使えますか?

はい、ExcelとGoogleスプレッドシートのLOOKUP関数は構文・動作ともにほぼ同じです。ExcelファイルとGoogleスプレッドシートでデータをやり取りしても、LOOKUP関数の数式はそのまま動作します。

互換性の高さは、検索関数の中でもLOOKUPの強みのひとつです。

まとめ

スプレッドシートのLOOKUP関数のポイントを振り返ります。

  • 構文は =LOOKUP(検索キー, 検索範囲, 結果範囲) の3引数が基本
  • 近似一致専用のため、検索範囲は昇順に並べ替え済みが前提
  • ランク判定や料金区分など、近似一致が必要な場面で活躍する
  • 完全一致で検索したい場合はVLOOKUP関数XLOOKUP関数を使う
  • 「最後に一致した値を取得する」テクニックはLOOKUP関数ならではの活用法
  • IFERROR関数とセットで使うとエラー対策も安心

まずはランク判定のような近似一致の場面で使ってみてください。VLOOKUPとの使い分けがわかると、検索関数の選択肢がグッと広がりますよ。

関連記事

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