ExcelのLOOKUP関数:完全ガイド
LOOKUP関数はスプレッドシートで利用できる古典的なツールの1つです。近年はXLOOKUPなどの新しい関数が注目を集めていますが、LOOKUPは依然として非常に有用です。本ガイドでは、LOOKUPについて知っておくべきすべての内容を1か所にまとめ、明確な説明と実用的な例で分かりやすく解説します。

LOOKUP関数の機能
LOOKUPは、1つのリストで値を素早く検索し、別のリストから対応する値を返すための便利なツールです。完全一致を必要とせず、近似値で動作し、検索対象以下で最大の値を返します。
信頼できる結果を得るためには、データが昇順に並んでいる必要があります。これにより関数がリストを正しく「上へ」たどれます。データがソートされていない場合、LOOKUPが途中で停止して誤った結果を返す可能性があるため、上から下へ数値が確実に増加するように整理しておくことが重要です。
LOOKUPの2つの形式
LOOKUPには2つのバージョンがあります。1つ目はベクター形式で、現在一般的に使用されているものです。2つ目は配列形式で、古いスプレッドシートとの互換性のために残されていますが、現代ではほとんど必要ありません。
ベクターLOOKUPの解説
ベクターLOOKUPの構文は次のとおりです:
LOOKUP(lookup_value, lookup_vector, result_vector)
ベクター版のLOOKUPはリストの先頭から開始し、値を1つずつ確認します。検索対象より大きい値を見つけた時点で1つ前の値に戻り、別リストの対応する結果を返します。検索対象がリスト内のすべての値より大きい場合、LOOKUPは最後の値を返します。
配列LOOKUPとほとんど使われない理由
配列版LOOKUPの構文は次のとおりです:
LOOKUP(lookup_value, array)
この形式では、関数は最初の行または最初の列のみを参照します。
- 配列が横に長い場合、LOOKUPは最初の行を検索し、最後の行から値を返します。
- 配列が縦に長い場合、最初の列を検索し、最後の列から値を返します。
ユーザーはどの部分が検索に使われ、どの部分から値が返されるかを制御できません。この柔軟性の低さから、多くの人はベクター形式を使用します。
例:数量に基づく価格
ONLYOFFICEスプレッドシートエディターで、実際の例を見ながら動作を理解しましょう。
次の表があります:
| Quantity | Price |
| 10 | 5 |
| 20 | 8 |
| 30 | 10 |
| 40 | 13 |
次の式を入力すると:
=LOOKUP(25, A2:A5, B2:B5)
関数は10 → 20 → 30とリストを走査します。30に到達すると、30が25より大きいため、1つ前の20に戻り、その行の価格8を返します。

これによりLOOKUPは、範囲、しきい値、特定の区間に基づく計算など、厳密な一致を必要としない場面に理想的な関数となります。
すぐ使える実用的な例
典型的な例は成績変換です。数値スコアを文字評価に変換する際、IF関数を複雑に重ねる必要はありません。LOOKUPがこの処理を簡単にします。
例1:スコアから成績への変換
| Score | Grade |
| 0 | F |
| 60 | D |
| 70 | C |
| 80 | B |
| 90 | A |
次の式:
=LOOKUP(78, A2:A6, B2:B6)
LOOKUPはスコアを順にたどり、検索対象より大きくない値のうち最大のものを返します。78の場合、最後に該当するのは70であり、結果はCとなります。IFを多数連ねる必要がなく、非常に明快です。

例2:送料
別の例として、重量に基づく送料があります。たとえば送料が2kg、5kg、10kgごとに増加する場合、重量列が昇順であれば、LOOKUPは自動的に適切な送料を返します。

LOOKUPと他の検索関数の比較
LOOKUPが他の検索関数の中でどの位置づけにあるかを理解することで、最適な関数を判断できます。
LOOKUPとVLOOKUP
VLOOKUPは表の最初の列から値を検索し、右側の列から値を返します。
構文:
VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])
用途:
検索値が常に最初の列にある縦方向の表での検索。
LOOKUPとの違い:
- 最初の列のみ検索可能(LOOKUPは任意の2リストに対応)。
- 右側列からのみ値を返す。
- 完全一致が可能(LOOKUPは不可)。
- 値が見つからないと明確にエラーを表示。
- 完全一致の場合はソート不要。
- LOOKUPはソート必須で常に近似一致。
LOOKUPとXLOOKUP
XLOOKUPは現代の検索関数で、あらゆる方向に検索でき、より制御性と信頼性があります。
構文:
XLOOKUP(lookup_value, lookup_array, return_array, [if_not_found], [match_mode], [search_mode])
用途:
縦横問わず柔軟な検索。完全一致、近似一致、カスタムエラーに対応。
LOOKUPとの違い:
- 上下左右すべてに検索可能。
- 非ソートデータでも利用可能。
- 完全一致と近似一致を選択可能。
- 未検出時にカスタムメッセージを返せる。
- より正確で予測可能。
- LOOKUPは簡潔だがソート前提の近似専用。
LOOKUPとHLOOKUP
HLOOKUPはVLOOKUPの横方向版です。表の最初の行を検索し、下の行から値を返します。
構文:
HLOOKUP(lookup_value, table_array, row_index_num, [range_lookup])
用途:
検索値が最初の行にある横方向の表。
LOOKUPとの違い:
- 横方向の表に限定(LOOKUPは制限なし)。
- 最初の行より上を検索したり、上の行から返すことは不可。
- 特定レイアウト必須。
- 柔軟性が低く、現在はXLOOKUPに代替されることが多い。
LOOKUPとINDEX + MATCH
INDEX + MATCHは高度な制御ができる強力な組み合わせです。
構文:
INDEX(return_array, MATCH(lookup_value, lookup_array, [match_type]))
用途:
検索方向、マッチ方式、エラー処理を厳密に制御したい場合に最適。
LOOKUPとの違い:
- 非ソートデータでも動作。
- 完全一致、近似一致、ワイルドカードに対応。
- どの方向にも検索可能。
- 未検出時に明確なエラー。
- 高度で柔軟だが記述が長くなる。
- LOOKUPは短いが制限が多く近似のみ。
LOOKUPとCHOOSE + MATCH
CHOOSE + MATCHは列を仮想的に再配置して検索構造を作成できます。
構文:
INDEX(CHOOSE({1,2}, ...), MATCH(...))
用途:
元データを編集せずに検索構造を柔軟に組み替えたい場合。
LOOKUPとの違い:
- 検索構造を完全に制御。
- 非ソートデータでも動作。
- 非常に柔軟だが管理が複雑。
- LOOKUPは簡潔で、データが整っていれば十分機能。
LOOKUPが適している場面
LOOKUPは、データがソートされており、近似一致が目的で、複数条件を使う複雑な式よりもシンプルな式を好む場合に最適です。しきい値表、コミッションレベル、税率区分、価格帯、送料表、成績表などが良い例です。
もし完全一致、エラー制御、高度な検索機能が必要であれば、LOOKUPは適しません。現代の関数の方が優れた制御性を提供します。
LOOKUPを避けるべき場面
データがソートされていない場合、完全一致が必要な場合、値が見つからなかった際の動作を制御する必要がある場合、またはスプレッドシートが複雑で近似一致に頼れない場合、LOOKUPは不向きです。そのような場合はXLOOKUPまたはINDEX + MATCHの方が信頼性が高く、予測可能です。
ONLYOFFICEスプレッドシートエディターを使ってデータ管理を簡素化
スプレッドシート作業を効率化したい場合は、ONLYOFFICEスプレッドシートエディターを開いて、これらの関数を試してみてください。
ONLYOFFICE DocSpaceアカウントをまだお持ちでない場合は、無料で作成できます。オンラインで試すか、デスクトップアプリを利用できます。
ONLYOFFICEの無料アカウントを登録する
オンラインでドキュメント、スプレッドシート、スライド、フォーム、PDFファイルの閲覧、編集、共同作業


