トピック

Excel実務で必須知識? 「VLOOKUP」と「XLOOKUP」関数の使い分け

商品、顧客、在庫などの大量データを扱うとき、必要な情報をすばやく検索できるかどうかが、業務効率を大きく左右します。そこで、Excel実務でよく使われているのがVLOOKUP関数です。

たとえば、商品コードから商品名や単価などを取得したり、社員IDから社員の所属部署を照合したりする際に、VLOOKUP関数が活用されています。現在では、VLOOKUP関数の進化版として登場したXLOOKUP関数も使われるようになってきました。

(例)VLOOKUP関数の使用例。セルB4にVLOOKUP関数を入力し、セルA4に入力している「コード」を「商品リスト」の表から検索し、該当する商品名を取り出している。

本記事では、VLOOKUP関数の基本的な使い方から、さらに効果的に使いこなすためのテクニックを解説します。VLOOKUP関数を「これまで知らなかった」「知っていたけど、ちょっと自信がない」という人にも、理解いただける内容です。そして、VLOOKUP関数の進化版であるXLOOKUP関数についても、その使い方やメリットを説明しています。VLOOKUP関数とXLOOKUP関数の使い方や違いを理解しておくと、状況に合った対応が可能となり、業務の効率化に役立ちます。ぜひ、最後までお読みください!

VLOOKUP関数の基本の使い方

まず、VLOOKUP関数の基本の使い方から見ていきましょう。VLOOKUP関数の構文は次のとおりで、4つの引数があります。

=VLOOKUP(検索値, 範囲, 列番号, 検索方法)

・検索値:検索する値、もしくは、その値を入力しているセルを指定
・範囲:表の検索する範囲を指定
・列番号:取り出すデータが、検索する範囲で左から何列目にあるかを指定
・検索方法:完全一致で検索する「FALSE」か、近似値(検索値に最も近い最大値)も検索する「TRUE」を指定

先ほどの「商品リスト」のVLOOKUP関数で、具体的に確認してみましょう。

  • 検索値 :「コード」を入力するセル(A4)
  • 範囲 :表の検索するセル範囲(D4:G10)
  • 列番号 :左から3列目にある「商品名」を取り出すので「3」
  • 検索方法 :完全一致で検索する「FALSE」

ポイントとしては、3つめの引数[列番号]に気を付けることです。引数[範囲]で指定した表のうち、取り出したい値が左から何列目にあるか、という位置を示します。そして、4つめの引数「検索方法」は、完全一致で検索することが多いので、「FALSE」と覚えておきましょう。VLOOKUP関数はランク分けや割引率の決定などの用途にも活用できます。「TRUE」は、こうした近似値での検索が必要なときに指定します。

ここまでの内容で、VLOOKUP関数の基本の使い方をつかんでいただけましたか? このあとは、実際にVLOOKUP関数を使うときの注意点や、効率アップを図る便利な使い方を紹介します。知っておいて欲しい、大切なことを紹介しているので、ぜひ読み進めてくださいね。

VLOOKUP関数を使うときの注意点

VLOOKUP関数を使うときの重要な注意点を紹介します。特にこれからVLOOKUP関数を使う方は、ぜひチェックしてみてください。数式のエラー表示を回避できるIFERROR関数についても紹介しています。

注意その1 検索値の列は左端に置く

引数[検索値]の対象となる「コード」のような列は、引数[範囲]で指定した表で左端に置くことが必須です。たとえば、下の例では「コード」の列が、表の右端に置かれて、「商品名」の左側にありません。このような場合、VLOOKUP関数を使って、「コード」を検索して「商品名」を取り出すことはできません。

(例)VLOOKUP関数が使用できない表

注意その2 検索値が未入力のときエラーが表示される

適切にVLOOKUP関数を入力しても、検索値が未入力の場合、「#N/A」というエラーが表示されます。何かミスをしたのかと思ってしまうかもしれませんが、そうではないので安心してくださいね。

こうした検索値が未入力で「#N/A」のようなエラーが表示されてしまうのを避けたいときは、IFERROR関数を使うとよいでしょう。IFERROR関数は、数式の結果がエラーのときに指定した値を表示する関数です。

=IFERROR(値, エラーの場合の値)

・値 :エラーかどうかをチェックする値を指定。
・エラーの場合の値 :エラーのときに表示する値を指定。

次の図のように、IFERROR関数の1つめの引数にVLOOKUP関数、2つめの引数に「””」を入力します。このようにIFERROR関数にVLOOKUP関数をネスト(関数の中に関数を入れる)しておくことで、エラーが表示されなくなります。

IFERROR関数を使って、1つめの引数の結果の値がエラーになるとき、何も表示されないようにしています。「”」(ダブルクォーテーション)を2つ連続して入力すると、空白という意味になります。

VLOOKUP関数を使う際、必ず押さえておくべき注意点を2つ説明しました。VLOOKUP関数を使い始めるとき、気を付けてくださいね。また、IFERROR関数は利便性が高く、マスターしておくといろいろ役立ちますよ。

なお、VLOOKUP関数を後継し、機能が進化しているXLOOKUP関数では、この2つの注意点は解消されています。後ほどXLOOKUP関数の使い方を紹介しているので、こちらも合わせて見てくださいね。

VLOOKUP関数の便利なテクニック 検索対象の表を「テーブル」にしておく

ビジネスシーンでは、VLOOKUP関数を入力するワークシートと、「商品リスト」などの表が、別々のシートに分けて管理されていることがよくあります。

たとえば、下の例でVLOOKUP関数を入力しているのは「在庫」シートで、検索対象となる表は「取扱い商品」シートです。別のシートに検索対象の表がある場合、引数[範囲]に指定したセル範囲には「取扱い商品!A4:D10」のようにシート名が追加されます。数式が長くなり、確認する際の手間が増えますね。

「在庫」シート
「取扱い商品」シート

また、「商品リスト」のような表では、あとから表のデータが追加・削除されることが考えられます。このようなデータの変更を行なったときは、引数[範囲]に指定しているセル範囲を修正しなければなりません。変更のたびに修正するのは面倒で、うっかり修正し忘れてしまったということもあるかもしれません。

そこで、表を「テーブル」にして管理しやすくしましょう。表をテーブルに変換すると、セル範囲の代わりに、テーブル名を数式に指定できます。データを追加すると自動的にテーブルの範囲が拡張されて、手動で修正する必要がありません。とても効率よく管理できますよ!

(例)テーブルに変換した表。表をテーブルに変換し、「商品リスト表」というテーブル名を付けています。表をテーブルに変換するには、表を選択して[挿入]タブの[テーブル]ボタンをクリックします

下の図のように、引数にテーブル名をそのまま指定します。別のシートに表があるときでも、指定するのはテーブル名だけです。数式がすっきりしていて、内容も把握しやすいですよね。

ここでVLOOKUP関数の説明は終わりになりますが、いかがだったでしょうか。「ちょっと試してみようかな」と思ってもらえたら嬉しいです。最初に想像していたよりもスムーズに使えると思うので、ぜひ試してみてくださいね。このあとは、XLOOKUP関数についての説明になります。VLOOKUP関数と使い方が少し違うので、チェックしてみてくださいね。

XLOOKUP関数とは?  VLOOKUP関数が使いやすく進化した関数

XLOOKUP関数は、VLOOKUP関数の後継となる関数です。機能がアップし、とても使いやすく進化しています。そのため、今後はVLOOKUP関数に変わって、XLOOKUP関数が主流になるといわれています。それでは、XLOOKUP関数の構文や引数を見ていきましょう。

=XLOOKUP(検索値, 検索範囲, 戻り配列, [見つからない場合], [一致モード], [検索モード])※[ ]で囲んでいるのは省略できる引数

・検索値 :検索する値、もしくは、その値を入力しているセルを指定
・検索範囲 :表の検索する範囲を指定
・戻り配列 :取り出したい値を含むセル範囲を指定
・見つからない場合 :検索値が見つからないときに表示する値を指定
・一致モード :完全一致か、近似値も検索するかを指定※省略すると「完全一致」
・検索モード:検索方向などを指定する。※省略すると「先頭から検索」

引数がVLOOKUP関数より増えているので、「難しくなった」と思われるかもしれませんが、全ての引数を指定するわけではありません。完全一致で検索する場合、指定する引数は[検索値]、[検索範囲]、[戻り配列]の3つだけで、ほかの引数は省略できます。エラー表示を回避したいときは、4つめの引数[見つからない場合]も指定します。

VLOOKUP関数の説明で使った「商品リスト」で確認してみましょう。

  • 検索値 :「コード」を入力するセルA4
  • 検索範囲 :表の「コード」のセル範囲D4:G10
  • 戻り配列 :表の「商品名」のセル範囲F4:F10
  • 見つからない場合:空白を意味する「””」

引数[検索値]と引数[検索範囲]の指定の仕方はVLOOKUP関数と同じです。引数[戻り範囲]は、「商品名」から値を取り出すセル範囲を指定します。VLOOKUP関数では表の左から列の何列目かを数えていましたが、XLOOKUP関数はセル範囲を指定するので分かりやすいですよね。さらに、完全一致で検索するときは、引数を省略できます。

また、この例では引数「見つからない場合」に「””」を指定し、検索値が未入力でも「#N/A」エラーが表示されないようにしています。これは、VLOOKUP関数ではIFERROR関数にネストして実現していたことです。

このようにXLOOKUP関数は、VLOOKUP関数より引数の指定がシンプルで簡単に使えるようになっていますね。続けて、XLOOKUP関数を使う際の注意点やポイントなどについて説明しますね。基本の使い方と合わせて、ぜひ知っておいてください。

[検索範囲]と[戻り範囲]の高さを揃える!

[検索範囲]と[戻り範囲]を指定する際、セル範囲の高さが揃っている必要があります。セル範囲の高さが異なっていると、「#VALUE!」のエラーが表示されるので気を付けてください。

検索値の列は左端でなくてもOK!

VLOOKUP関数では、「コード」のような検索値の列は表の左端に置く必要がありましたよね。このルールがXLOOKUP関数ではなくなっていて、表のどの位置でもかまいません。たとえば、表の右端に「コード」の列があっても、XLOOKUP関数では検索できます。

完全一致での検索は引数を省略できる 5つめの引数[一致モード]について

XLOOKUP関数では、完全一致で検索するか、近似値も検索するかは、5つめの引数[一致モード]に次の数値で指定します。完全一致のときは、引数を省略できることを覚えておきましょう。


    0 ・・・・ 完全一致 ※省略可能
    -1 ・・・ 完全一致か検索値未満で直近の値
    1 ・・・・ 完全一致か検索値より大きい直近の値
    2 ・・・・ ワイルドカード(「*」や「?」など)で一致した値

検索する方向が指定できる 6つめの引数[検索モード]について

XLOOKUP関数では、6つめの引数[検索モード]で検索する方向を指定できます。省略すると先頭から末尾で検索されるので、通常は気にする必要はないでしょう。


    1 ・・・・ 先頭から末尾に検索 ※省略可能
    -1 ・・・ 末尾から先頭に検索
    2 ・・・・ バイナリ検索(昇順)
    -2 ・・・ バイナリ検索(降順)

バイナリ検索は、数万件以上のデータを高速に検索するときに使います。その際には、データを昇順または降順に並べておく必要があります。

これからはXLOOKUP関数! VLOOKUP関数はもう使わない?

XLOOKUP関数は、VLOOKUP関数で不便だった点が解消されて、ずっと使いやすくなっていますね。「これからはXLOOKUP関数を使っていけばいい!」と思われた方も多いのではないでしょうか。「XLOOKUP関数に乗り換えよう」という紹介もよく目にしますよね。

XLOOKUP関数が使用できるのはMicrosoft 365とExcel 2021以降のバージョンで、提供が始まって、まだ数年しか経っていません。これまでの長い間VLOOKUP関数が使われてきて、VLOOKUP関数を使ったデータが多く存在しています。業務では既存データは共有、継承されることが一般的で、VLOOKUP関数を使っているものもあります。このような既存データを適切に扱うためには、VLOOKUP関数の知識も必要です。

こうした背景から、VLOOKUP関数とXLOOKUP関数のどちらか一方だけではなく、両方を使えるようにしておくことをお勧めします。状況に合った使い分けが可能となり、業務の効率化につながります。

VLOOKUP関数とXLOOKUP関数について、基本的な操作や違いをご紹介しました。皆さんがこれらの関数を使う際、お役に立てれば嬉しいです。最後までお読みいただき、ありがとうございました!

間久保 恭子

ソフトウェアメーカーでユーザーサポートや教材開発に従事した後、フリーランスのテクニカルライターとして独立。IT教育コンサルタントとして企業研修やセミナーを展開し、情報リテラシー向上に取り組む。著書に『かんたん合格ITパスポート過去問題集』『ITパスポート教科書+模擬問題』『できるポケット 時短の王道 ショートカットキー全事典 改訂4版』(インプレス)ほか多数。