LOOKUP関数とVLOOKUP関数の違いを実務で比較する方法

LOOKUP関数とVLOOKUP関数の違いを実務で比較する方法 IT
  1. まず押さえる:LOOKUP関数/VLOOKUP関数の“できること”早見表
  2. 実務シーンで比べる①:単純な検索(コード→名称)での使い分け
    1. ケース:売上明細に商品名を付けたい
    2. 結論:まずはVLOOKUPの「完全一致」
    3. LOOKUPで書くとどうなる?(見た目はスッキリ、でも条件付き)
    4. 単純検索の使い分けルール(迷わない基準)
  3. 実務シーンで比べる②:表の増減・列追加に強いのはどっち?(運用・保守性)
    1. よくある事故①:列追加でVLOOKUPの「列番号」がズレる
    2. よくある事故②:範囲の増減で「一部だけ抜ける」
    3. じゃあLOOKUPは保守性が高い?:列追加には強いが、運用条件がシビア
    4. 実務ルール:変更が起きる場所を見て使い分ける
  4. 実務シーンで比べる③:ミスが起きるポイント比較(近似一致・データ並び・空白)
    1. ミス①:近似一致が混ざると「それっぽい値」が返る
    2. ミス②:並び順(ソート)に依存すると、更新運用で破綻する
    3. ミス③:空白・余計なスペース・文字列/数値の混在で「一致しない」
  5. 結論:職場で迷わない選び方+おすすめ代替(XLOOKUP/INDEX+MATCH)
    1. 迷ったらこのルール:まずはVLOOKUP(FALSE)で型を作る
    2. ただしVLOOKUPの弱点(列番号ズレ)を感じたら、代替へ移行
    3. おすすめ代替①:XLOOKUP(いま一番ラクで事故りにくい)
    4. おすすめ代替②:INDEX+MATCH(古い環境でも通る“定番の強い書き方”)
    5. 結局どれを選ぶ?(実務の判断フロー)

まず押さえる:LOOKUP関数/VLOOKUP関数の“できること”早見表

「Excelで検索」と聞いて真っ先に出てくるのがVLOOKUP関数。一方でLOOKUP関数は名前は知っていても、実務ではあまり使われない印象があるかもしれません。結論から言うと、実務での主役はVLOOKUPで、LOOKUPは条件がハマると軽いけどハマらないと事故りやすいタイプです。まずは「何ができて、何が苦手か」を表で押さえると迷いが減ります。

観点 LOOKUP関数 VLOOKUP関数
主な用途 1行/1列の範囲から値を探して返す(シンプル) 表(縦)からキー検索して、指定列の値を返す(実務向き)
検索方法 近似一致が基本(小さい順など並びが重要) 完全一致/近似一致を選べる(第4引数)
並び替え要否 必要(未整列だと誤結果になりやすい) 完全一致なら不要(近似一致は要注意)
返せる範囲 基本は「検索範囲」と「結果範囲」を別に指定(ベクトル形式) テーブルの左端列で検索し、右側の列を返す
弱点 仕様理解が浅いとミスりやすい(近似一致・並び・空白) 列番号指定が壊れやすい(列追加・移動に弱い)

式の形も、先に見ておくとイメージがつきます。

  • LOOKUP(ベクトル形式の代表例)
    =LOOKUP(検索値, 検索ベクトル, 結果ベクトル)
  • VLOOKUP
    =VLOOKUP(検索値, 範囲, 列番号, [検索方法])

たとえば「社員コード → 氏名」を引くなら、VLOOKUPは“社員マスタ表”をそのまま読みに行けるので自然です。対してLOOKUPは、「検索する列(社員コード列)」と「返す列(氏名列)」をそれぞれ指定できるので一見スマート。でも、LOOKUPは基本が近似一致なので、社員コードが昇順に並んでいない、あるいは途中に空白や文字列混在があるだけで、気づかないうちに別人の名前を返すリスクがあります。

このブログのゴールは「関数の暗記」ではなく、実務で安全に使い分ける判断軸を持つこと。次章からは、いちばん多い現場シーン(コード→名称)で、どっちを使うと手戻りが少ないかを具体例で比べていきます。

実務シーンで比べる①:単純な検索(コード→名称)での使い分け

いちばんよくあるのが「商品コードから商品名を出す」「社員コードから氏名を出す」みたいなコード→名称の変換です。現場では、この用途なら基本はVLOOKUP(完全一致)に寄せるのが安全。LOOKUPも書けますが、前章で触れたとおり近似一致が前提なので、マスタの状態次第で“静かに間違う”リスクがつきまといます。

ケース:売上明細に商品名を付けたい

例として、売上明細(A列:商品コード)に、商品マスタ(E列:商品コード/F列:商品名)から商品名を引っ張る場面を想定します。

  • 売上明細:A2 に商品コード(例:P102)
  • 商品マスタ:E2:E100 が商品コード、F2:F100 が商品名

結論:まずはVLOOKUPの「完全一致」

VLOOKUPなら、表をそのまま指定して「一致した行の○列目」を返せます。実務の基本形はこれです。

=VLOOKUP(A2, $E$2:$F$100, 2, FALSE)

ポイントは第4引数をFALSE(完全一致)にすること。これで「P102と完全に同じコード」の行だけを拾います。並び順がバラバラでも関係ありません。

さらに実務では、未登録コードが混ざることもあるので、エラー表示を抑えるならIFERRORとセットが鉄板です。

=IFERROR(VLOOKUP(A2, $E$2:$F$100, 2, FALSE), "未登録")

LOOKUPで書くとどうなる?(見た目はスッキリ、でも条件付き)

LOOKUP(ベクトル形式)だと、検索列と結果列を別で指定できるので式は短く見えます。

=LOOKUP(A2, $E$2:$E$100, $F$2:$F$100)

ただしこの式が安全に成立する条件はシビアです。

  • 商品コード列(E2:E100)が昇順に並んでいる
  • コードが数字/文字列で混在していない
  • 途中に空白や崩れがなく、検索範囲がきれいな1列

この条件が崩れると、LOOKUPは「完全一致で見つからないとき、直前の値を返す」という挙動になりやすく、それっぽい値を返してしまうのが怖いところです。たとえばマスタが未整列なのに気づかず運用すると、エラーにならずに別商品の名前が入り、検算するまで発見できません。

単純検索の使い分けルール(迷わない基準)

  • 原則:VLOOKUP + FALSE(完全一致)で「間違えようがない」形にする
  • 例外:マスタが常に昇順で整備され、仕様理解がチームで揃っているならLOOKUPも可
  • 運用目線:「ミスったときに間違いだと気づけるか?」まで含めると、単純検索はVLOOKUPが強い

次章では、さらに現場で効いてくる論点として、表の列追加やマスタ拡張が起きたときに壊れやすいのはどっちか(運用・保守性)を掘り下げます。

実務シーンで比べる②:表の増減・列追加に強いのはどっち?(運用・保守性)

実務で本当に困るのは「最初は動いてたのに、運用してたら壊れた」パターンです。特に多いのが、マスタの列が増える/順番が変わる/範囲が広がるケース。ここでは保守性(壊れにくさ・直しやすさ)の観点で、LOOKUPとVLOOKUPを比べます。

よくある事故①:列追加でVLOOKUPの「列番号」がズレる

VLOOKUPは「範囲の左端で検索して、右から何列目を返す」という仕様なので、列番号が固定だと変更に弱いです。

たとえば商品マスタが E列:商品コード / F列:商品名 のとき、明細側はこう書けました(2章の形):

=VLOOKUP(A2, $E$2:$F$100, 2, FALSE)

ところが運用中に「カテゴリ列を商品名の手前に追加」して、マスタが E:商品コード / F:カテゴリ / G:商品名 に変わると…。

  • 式が参照する「2列目」はカテゴリになり、商品名のつもりでカテゴリが出る
  • しかもエラーにならないので、気づきにくい

この場合は列番号を3に直す必要があります。

=VLOOKUP(A2, $E$2:$G$100, 3, FALSE)

つまりVLOOKUPは、表の構造が変わる職場ほどメンテが発生します。列追加が頻繁なマスタ(商品・部門・プロジェクトなど)は特に要注意です。

よくある事故②:範囲の増減で「一部だけ抜ける」

もう一つは、マスタが伸びたのに範囲固定のまま運用してしまうケース。たとえば $E$2:$F$100 のままなのに、商品が追加されて101行目以降に新コードが入ると、新商品だけ未登録扱いになります。

対策としては、範囲を広めに取る(例:$E:$F)か、テーブル化(Ctrl+T)して参照が自動拡張される形に寄せるのが実務的です。

じゃあLOOKUPは保守性が高い?:列追加には強いが、運用条件がシビア

LOOKUP(ベクトル形式)の良いところは「検索列」と「結果列」を別指定できる点です。さっきの例なら、商品名列がGに移動しても、式側で返す範囲をG列に変えるだけで済みます。

=LOOKUP(A2, $E$2:$E$100, $G$2:$G$100)

さらに「商品名列の場所が変わっても、検索列(商品コード)がE列のままなら成り立つ」ため、列番号ズレ事故は起きにくいです。

ただし、LOOKUPは保守性の前提として

  • 検索列が昇順に整列され続ける
  • 空白や型混在など、データの崩れが起きない

が必要でした。運用でマスタが「誰でも追記するシート」になっていると、この前提があっさり崩れます。列追加には強くても、データ品質に弱いのがLOOKUPの現実です。

実務ルール:変更が起きる場所を見て使い分ける

  • 列が増えたり並びが変わりやすい:VLOOKUPはズレやすい(列番号が地雷)。ただし完全一致で安全
  • データが崩れやすい(未整列・空白混入):LOOKUPは静かに誤結果を返しやすい
  • 保守の基本:「マスタはテーブル化」「参照範囲は固定しすぎない」「変更が入る前提で式を選ぶ」

次章では、こうした運用の中で実際に起きるミスのパターン(近似一致、データ並び、空白)を、どこでどうハマるのか具体的に比較していきます。

実務シーンで比べる③:ミスが起きるポイント比較(近似一致・データ並び・空白)

LOOKUPとVLOOKUPの差がいちばん“事故”として出るのが、ミスってもエラーにならないパターンです。特に注意したいのは、①近似一致、②並び順(ソート)、③空白や型のブレ。ここを押さえると「なぜVLOOKUP(完全一致)が現場で強いのか」が腹落ちします。

ミス①:近似一致が混ざると「それっぽい値」が返る

LOOKUPは基本が近似一致なので、完全一致が見つからないと“直前の値”を返す挙動になりがちです。例えば本当は「P105」を探したいのに、マスタに未登録で「P104」までしかない場合、LOOKUPはP104の情報を返してしまうことがあります。つまり未登録なのに普通に表示されるのが怖い。

VLOOKUPでも第4引数を省略したりTRUEにすると近似一致になり、同じ事故が起きます。

  • =VLOOKUP(A2,$E$2:$F$100,2) ← 省略は近似一致扱いになりやすく危険
  • =VLOOKUP(A2,$E$2:$F$100,2,TRUE) ← 近似一致(ソート必須)

実務ルールとしてはシンプルで、コード→名称は必ずFALSE

=VLOOKUP(A2,$E$2:$F$100,2,FALSE)

ミス②:並び順(ソート)に依存すると、更新運用で破綻する

LOOKUP(近似一致前提)は、検索列が昇順で整列していることが大前提です。でも現場のマスタは「追加した人の順に下へ追記」「フィルタして戻し忘れ」などで、並びが簡単に崩れます。

このとき厄介なのが、崩れてもLOOKUPはエラーを出さずに間違う点。検算しない限り発見しづらく、月次の締めで爆発します。

一方、VLOOKUPは完全一致(FALSE)なら並び順に依存しないので、マスタが“追記運用”でも比較的安全です。裏を返すと、VLOOKUP運用で並び順を気にする必要が出るのは、近似一致(TRUE)を使うケース(単価表のレンジ判定など)に限ります。

ミス③:空白・余計なスペース・文字列/数値の混在で「一致しない」

もう一つの定番がデータの汚れ問題です。たとえば「P102 」のように末尾にスペースが混ざる、数字コードが「00123(文字列)」と「123(数値)」で混在する、といったケース。ここでは挙動が分かれます。

  • VLOOKUP(FALSE):一致しなければ#N/Aで止まる → まだ気づける(IFERRORで握りつぶしすぎると逆に危険)
  • LOOKUP:データ状態によっては近似一致で別の値を返す → 気づきにくい

対策は「関数を頑張る」より、まずはデータを整えるのが早いです。

  • 余計な空白:TRIMで除去(取り込みデータに多い)
  • 文字列/数値混在:コード列の表示形式・入力規則を揃える
  • 未登録検知:IFERRORで隠すなら、「未登録」など目立つ文言にする

まとめると、ミスの出方はこうです。

  • LOOKUP:条件が崩れると「静かに間違う」リスクが高い(近似一致×未整列×汚れに弱い)
  • VLOOKUP(FALSE):一致しないとエラーになりやすく、異常検知ができる

次章では、ここまでの比較を踏まえて「職場で迷わない選び方」と、現場でさらに事故を減らせる代替案(XLOOKUP/INDEX+MATCH)まで一気に整理します。

結論:職場で迷わない選び方+おすすめ代替(XLOOKUP/INDEX+MATCH)

ここまでの比較を踏まえると、実務の結論はシンプルです。「まず安全に回す」ならVLOOKUP(完全一致)、そして「運用で壊れない形」まで狙うならXLOOKUPかINDEX+MATCHが最終的に手戻りを減らします。LOOKUPは「整列が担保され、仕様を理解した人だけが触る」条件でのみ選択肢に入る、という立ち位置です。

迷ったらこのルール:まずはVLOOKUP(FALSE)で型を作る

  • コード→名称/ID→部署名など、キーが一意の検索は VLOOKUP + FALSE
  • マスタ未登録が混ざる前提なら、エラーを消すのではなく「未登録」と明示
=IFERROR(VLOOKUP(A2,$E$2:$F$100,2,FALSE),"未登録")

ポイントは「エラーを静かに消して空欄にしない」こと。空欄は見落とされやすく、後工程(集計・請求)で爆発します。

ただしVLOOKUPの弱点(列番号ズレ)を感じたら、代替へ移行

3章で触れた通り、列追加・列移動が起きるマスタでは、VLOOKUPの「列番号」が地雷になります。ここでおすすめの代替がXLOOKUP、次点でINDEX+MATCHです。

おすすめ代替①:XLOOKUP(いま一番ラクで事故りにくい)

XLOOKUPは「検索列」と「返す列」を分けて指定でき、なおかつ完全一致がデフォルト寄りの設計で、VLOOKUPの弱点をまとめて潰せます。

=XLOOKUP(A2,$E$2:$E$100,$F$2:$F$100,"未登録")
  • 列番号が不要 → 列追加・列移動に強い
  • 見つからないときの表示も引数で指定 → IFERRORが不要になりがち
  • 参照範囲が「列」で明確 → レビューもしやすい

職場で使える環境(Microsoft 365等)なら、検索系は基本XLOOKUPに寄せるのが最短ルートです。

おすすめ代替②:INDEX+MATCH(古い環境でも通る“定番の強い書き方”)

XLOOKUPが使えない場合でも、INDEX+MATCHなら同じ発想で組めます。

=IFERROR(INDEX($F$2:$F$100, MATCH(A2,$E$2:$E$100,0)),"未登録")
  • MATCHの「0」が完全一致(ここが超重要)
  • 列位置が変わっても、返す列(INDEX側)を差し替えるだけでOK

結局どれを選ぶ?(実務の判断フロー)

  • 会社のExcelがXLOOKUP対応XLOOKUP(最優先)
  • XLOOKUPなし/互換性優先INDEX+MATCH
  • とにかく早く・誰でも読める形で統一VLOOKUP(FALSE)
  • LOOKUPは「昇順が保証される特殊ケース」以外では、基本は封印でOK

検索関数で一番大事なのは、式のうまさより運用で壊れない設計です。あなたの職場の「マスタは誰が触る?列は増える?未登録は混ざる?」に合わせて、安全側(完全一致/列番号依存なし)へ寄せるのが正解です。

コメント

NewsTowerをもっと見る

今すぐ購読し、続きを読んで、すべてのアーカイブにアクセスしましょう。

続きを読む