スプレッドシートのLOOKUP関数の使い方|検索(1行/1列)

スポンサーリンク

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

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

そんなときに使えるのがLOOKUP関数です。1行または1列の範囲をサッと検索して、対応する値を返してくれます。この記事ではLOOKUP関数の基本からVLOOKUP・HLOOKUP・XLOOKUPとの使い分けまで紹介します。

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

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

VLOOKUPが「縦方向の表検索」、HLOOKUPが「横方向の表検索」に特化しているのに対し、LOOKUP関数は1行/1列のシンプルな範囲を検索します。検索範囲が小さい場面では、VLOOKUPより短い数式で済むのがメリットです。

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

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

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

検索範囲が昇順でないと、正しい結果が返りません。データを事前にSORT関数やフィルタで並べ替えておくか、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関数のほうが直感的ですね。

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

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

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

実務では「該当なし」や空文字「””」を指定するケースが多いです。

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

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

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

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

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

NOTE

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

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

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関数ならではのテクニックです。

よくあるエラーと対処法

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

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

検索範囲が昇順でないときの対処

LOOKUP関数は近似一致専用のため、検索範囲が昇順でないと間違った値を返すことがあります。エラーにならず誤った結果が返るため、気づきにくい点に注意してください。

完全一致で検索したい場合は、以下の関数を使いましょう。

  • 1列の表を縦方向に検索VLOOKUP関数(第4引数にFALSE)
  • 1行の表を横方向に検索HLOOKUP関数(第4引数にFALSE)
  • 方向を問わず柔軟に検索XLOOKUP関数

VLOOKUP・HLOOKUP・XLOOKUPとの違い・使い分け

スプレッドシートには検索関数が複数あります。それぞれの特徴を比較表で整理します。

4つの検索関数 比較表

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

どの関数を選べばいい?

判断基準はシンプルです。

  • 完全一致で検索したい(実務の9割) → VLOOKUP関数が最も一般的
  • 近似一致でランク判定・料金区分をしたい → LOOKUP関数がシンプル
  • 横方向のデータを検索したいHLOOKUP関数
  • 左方向の検索や複数列の取得が必要XLOOKUP関数がベスト
  • 検索位置を柔軟に指定したいINDEX関数 + MATCH関数の組み合わせ

LOOKUP関数は構文がシンプルで覚えやすいのが強みです。ただし近似一致しかできないため、完全一致が必要な場面ではVLOOKUPやXLOOKUPを選びましょう。

まとめ

LOOKUP関数のポイントを振り返ります。

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

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

関連記事

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