「商品コードを入れると単価が出てくる」――そんな表を、VLOOKUP関数で作っている会社は多いと思います。
VLOOKUPは長年使い慣れた便利な関数です。一方で、使っていると次のような小さなストレスもあります。
- 列を1つ増やしただけで表が崩れた
- エラーを消すために、毎回IFERRORで囲むのが面倒
こうした悩みの多くは、VLOOKUPの後継として登場した「XLOOKUP」に置き換えることで解決します。ただし、XLOOKUPは古いバージョンのExcelでは使えません。
この記事では、まずXLOOKUPとVLOOKUPの違いを、初心者の方にもわかるように整理します。そのうえで、置き換えるべき理由と、実際の移行手順を順番にご紹介します。最後に、VLOOKUPのままでよい場面との使い分けも取り上げます。お手元のExcelで一つずつ試しながら読み進めてください。
- XLOOKUPとVLOOKUPの違いと基本の形
- XLOOKUPに置き換えると良くなる点
- お使いのExcelでXLOOKUPが使えるかの確かめ方
- 置き換えの手順と、VLOOKUPのままでよい場面
XLOOKUPとは?VLOOKUPとの違い
XLOOKUPは、ひとことで言えば「VLOOKUPをより使いやすく直した、新しい検索関数」です。できることは似ていますが、VLOOKUPが長年抱えていた弱点をいくつも解消しています。両者の成り立ちを簡単に振り返ってみましょう。
VLOOKUPの弱点とXLOOKUPが生まれた背景
VLOOKUPは、表の中から特定の値を探し出し、それに対応する情報を取り出す関数です。たとえば「商品コードA-101」を手がかりに、商品マスタから「単価3,980円」を引っ張ってくるといった使い方をします。社員番号から氏名を、得意先コードから会社名を引く、というように、事務仕事のあらゆる場面で活躍します。
書き方は次の形です。
=VLOOKUP(検索値, 範囲, 列番号, 検索方法)
便利なVLOOKUPですが、弱点がいくつかありました。弱点は次の3つです。
- 列を番号で指定するため、列の増減に弱い
- 検索する列より左の情報を取り出せない
- 値が見つからないときのエラー処理が面倒
これらの弱点をまとめて解消する後継関数として、Microsoftが2019年8月に発表したのがXLOOKUPです。その後、Microsoft 365の利用者へ順次提供され、一般に使えるようになりました。
XLOOKUPは、次の関数の役割をひとつにまとめる目的で設計されました。
- VLOOKUP
- HLOOKUP(横方向の検索)
- INDEXとMATCHの組み合わせ
これから表を新しく作り直すのであれば、XLOOKUPを使ったほうが良いでしょう。
既存の式を無理にすべて書き換える必要はありません。新しく作る表からXLOOKUPを取り入れ、置き換えは簡単な式から一つずつ進めてください。
XLOOKUPの基本の形
XLOOKUPの基本の形は、とてもシンプルです。次の3つを指定するだけで使えます。
=XLOOKUP(検索値, 検索範囲, 戻り範囲)
商品マスタ(A列=商品コード、B列=商品名、C列=単価)で「商品コードから単価を引く」場合に当てはめると、次のようになります。
検索値
探す手がかりにする値です。ここでは「知りたい商品コード(例:A-101)」がそれに当たります。この値を手がかりに目的のセルを探してくださいとExcelに伝える部分です。
検索範囲
その手がかりを探しにいく列です。ここでは「商品コードがずらりと並んだA列」がそれに当たります。
戻り範囲
見つかった行から、答えとして取り出したい列です。ここでは「単価が並んだC列」がそれに当たります。
この3つのあとに、省略できる指定が3つ続きます。すべて書くと次の形です。
=XLOOKUP(検索値, 検索範囲, 戻り範囲, 見つからない場合, 一致モード, 検索モード)
- 見つからない場合:見つからなかったときに表示する値。省略すると「#N/A」を返します
- 一致モード:完全一致か、近い値も探すか。省略すると完全一致です
- 検索モード:上から探すか、下から探すか。省略すると上から探します
一致モードと検索モードの使い方は、次の章で具体的な式とあわせて紹介します。
XLOOKUPに置き換えると何が良くなるか?
VLOOKUPをXLOOKUPに置き換えるとどのような利点が得られるのか、表にまとめました。
| 項目 | VLOOKUP | XLOOKUP |
|---|---|---|
| 検索する列より左のデータ | 直接取り出せない | 取り出せる |
| 列の挿入・削除 | 番号がずれて別の列の値を返すことがある | 指定した列がついてくるので壊れにくい |
| 見つからないときの処理 | 式全体をIFERRORで囲む | 式の中に直接書き込める(省略時は#N/A) |
| 一致の方法 | 最後の指定を省くと近似一致になる | はじめから完全一致 |
| 下から探す | できない(上から最初の1件を返す) | 検索モードで選べる |
| 複数の列の取り出し | 列ごとに1つずつ式が必要 | 1つの式でまとめて取り出せる(スピル) |
| 使えるバージョン | Excel 2016・2019を含む各バージョン | Microsoft 365、Excel 2021・2024など(2016・2019では使えない) |
※使えるバージョンは、2026年9月時点のMicrosoftのヘルプによります。
ここからは、XLOOKUPに置き換えることで具体的に何が良くなるのかを、VLOOKUPの弱点と対比しながら紹介します。どれも実務で「あるある」の悩みばかりですので、心当たりのある項目から読んでください。
検索する列より左のデータも取り出せる
VLOOKUPには、「検索する列は、表の一番左になければならない」という大きな制約があります。たとえば商品名から商品コードを引きたいとき、商品コードが商品名より左の列にあると、VLOOKUPでは直接取り出せません。そのため今まではINDEXとMATCHを組み合わせるなど、遠回りが必要でした。
XLOOKUPなら、「探す列」と「答えを返す列」を別々に指定できるため、答えの列が左にあっても問題なく取り出せます。表のレイアウトに合わせて式を工夫する必要がなくなり、考える手間が減ります。
列を挿入・削除しても式が壊れにくい
これはVLOOKUPを使っていて、最も多くの方が経験する「事故」ではないでしょうか。VLOOKUPは、取り出す列を「左から3番目」のように番号で指定します。そのため、表の途中に列を1つ挿入すると番号がずれ、別の列の値を返してしまいます。空欄になることもあります。

XLOOKUPは、番号ではなく「答えを取り出す列」そのものを指定しています。そのため、表に列を挿入しても、指定した列が自動でついてくるので式が壊れません。列の増減が多い管理表ほど、こういった差が効いてきます。
この壊れにくさは、担当者が変わっても崩れないファイルづくり、つまり属人化の解消にもつながります。

見つからないときの処理を式の中で完結できる
検索した値が見つからないと、VLOOKUPは「#N/A」というエラーを返します。これを「該当なし」などの文字に変えたいときは、これまでは式全体をIFERRORで囲む必要があり、式が長く読みづらくなりがちでした。
XLOOKUPは、見つからなかったときに表示する値を、式の中に直接書き込めます。エラー処理のためだけに関数を二重にする必要がなくなり、式がすっきりと読みやすくなります。
=XLOOKUP(検索値, 検索範囲, 戻り範囲,"該当なし")
完全一致がはじめから使われる
VLOOKUPには、初心者がはまりやすい落とし穴があります。それは、最後の指定(完全一致か近似一致か)をうっかり省くと、「近い値」を勝手に探してくる「近似一致」になってしまうことです。コード表などで近似一致が働くと、まったく別の商品の値を静かに返してしまい、間違いに気づけないという事故につながります。
XLOOKUPは、はじめから「完全一致」で動くように作られています。ぴったり一致するものがなければ「#N/A」を返します。4つ目の指定に「該当なし」と書いておけば、その文字が表示されます。どちらの場合も、気づかないうちに誤った値を拾ってしまう心配がありません。

近い値や一部の文字でも探せる
完全一致が基本ですが、5つ目の指定「一致モード」を使うと、ぴったり一致しない値も探せます。指定できる値は次の4つです(2026年9月時点のMicrosoftのヘルプによる)。
| 値 | 探し方 |
|---|---|
| 0(省略時) | 完全一致。見つからなければ#N/A |
| -1 | 完全一致。なければ、次に小さい値 |
| 1 | 完全一致。なければ、次に大きい値 |
| 2 | ワイルドカード一致(「*」「?」「~」を特別な記号として扱う) |
たとえば、E2に予算(例:5,000)を入力します。予算内でいちばん単価の高い商品名を取り出す式は次のとおりです。
=XLOOKUP(E2,$C$2:$C$100,$B$2:$B$100,"該当なし",-1)
C列(単価)から5,000円ちょうどの商品を探します。なければ、5,000円より安い中で最も近い商品を返します。
VLOOKUPでも、4つ目にTRUEを指定すると近い値を探せます。ただし、表の1列目が昇順に並んでいることが前提です。並べ替えを忘れると、誤った値を返すおそれがあります。XLOOKUPの一致モードは、並べ替えていない表でも使えます。
次は、商品名の一部で探す例です。E2に「ボールペン」と入力し、「ボールペン」を含む商品の商品コードを取り出します。
=XLOOKUP("*"&E2&"*",$B$2:$B$100,$A$2:$A$100,"該当なし",2)
「*」は「何文字でもよい任意の文字」を表します。前後に「*」をつなぐと、「ボールペン」を含む商品名が対象になります。条件に合う商品が複数あるときは、上から探して最初に見つかった行の値を返します。
下から探して最新の値を取り出せる
単価を改定するたびに、同じ商品コードの行を表の下へ追加していく運用があります。この場合、同じ商品コードが複数行に並び、いちばん下の行が最新の単価です。VLOOKUPは上から探すため、先に見つかった古い単価を返してしまいます。
XLOOKUPでは、6つ目の指定「検索モード」に-1を指定すると、下から上へ探します。E2の商品コードの最新の単価を取り出す式は次のとおりです。
=XLOOKUP(E2,$A$2:$A$100,$C$2:$C$100,"該当なし",0,-1)
5つ目の一致モードには、完全一致の「0」を書いておきます。検索モードで指定できる値は次の4つです(2026年9月時点のMicrosoftのヘルプによる)。
- 1(省略時):先頭から末尾へ探す
- -1:末尾から先頭へ探す
- 2:昇順に並べ替えた表を、二分探索で探す
- -2:降順に並べ替えた表を、二分探索で探す
日常の表引きで使うのは、1と-1の2つで十分です。
複数の列をまとめて取り出せる
商品コードから「商品名」「単価」「在庫数」をまとめて取り出したいとき、VLOOKUPではそれぞれに1つずつ、合計3つの式が必要でした。列が増えるほど式の数も増え、管理が大変になります。
XLOOKUPは、取り出す範囲に複数の列をまとめて指定すると、1つの式で横方向に自動で結果を並べてくれます(この機能を「スピル」と呼びます)。式の数が減るぶん、表もシンプルになります。修正が必要な場合も、一カ所を直すだけで済みます。

XLOOKUPが使えるか確認する
XLOOKUPはとても便利な関数ですが、冒頭でも触れたとおり、使えるExcelのバージョンに制限があります。記事を読み進めてから「自分のExcelでは使えなかった」とがっかりされないよう、置き換えの手順に進む前に、お使いのExcelバージョンを確認しておきましょう。
バージョンを確認する方法
お使いのExcelでXLOOKUPが使えるかどうかを確認する方法はいくつかありますが、いちばん確実なのは、実際に試してみることです。
どこか空いているセルに「=XLOOKUP(」と入力してみてください。入力の途中で「XLOOKUP」が候補として表示されれば、お使いのExcelでXLOOKUPは使えます。候補に出てこない場合や、確定したときに「#NAME?」と表示される場合は、お使いのExcelはXLOOKUPに対応していません。

バージョンの表記から見分けたい場合は、[ファイル]→[アカウント]を開きます。画面上部の「製品情報」の欄に、「Microsoft 365 Apps」や「Office Home & Business 2024」といった製品名が大きく表示されます。
2026年9月時点で、XLOOKUPは次のExcelで使えます。
- Microsoft 365のExcel(Mac版を含む)
- Excel 2021・Excel 2024(Mac版を含む)
- iPad・iPhone・Android版のExcel
Excel 2019・Excel 2016では使えません。
なお、その下の[Excelのバージョン情報]には、「バージョン 2609」のような番号が出ます。この4桁の番号は、買い切り版のOffice 2019などでも同じ形式で表示されます。番号だけでは判断できないため、上の「製品情報」の製品名で確認してください。

使えない場合の選択肢
お使いのExcelがXLOOKUPに対応していなくても、代替案があります。
ひとつ目は、INDEXとMATCHの組み合わせで当面をしのぐ方法です。もうひとつは、Microsoft 365への切り替えです。どちらが向いているかは会社の状況によります。あわせて、Googleスプレッドシートで使う方法も紹介します。
INDEXとMATCHの組み合わせで代用する
XLOOKUPが使えない環境でも、INDEXとMATCHを組み合わせれば、検索する列より左のデータを取り出したり、列の増減に強い式を作ったりできます。書き方は少し難しくなりますが、当面をしのぐ現実的な方法です。
=INDEX(返したい列, MATCH(検索値, 探す列, 0))
VLOOKUPの弱点を補う定番の手法として、覚えておきましょう。
Microsoft 365への更新を検討する
もう一歩踏み込んだ選択肢が、Microsoft 365への切り替えです。XLOOKUPに加えて、新しい関数やAI機能も使えるようになります。使えるAI機能はプランにより異なります(2026年9月時点)。
Office 2016・2019は、2025年10月14日にサポートが終了しています。これらを使い続けている場合は、この機会に更新を検討してください。
Googleスプレッドシートでも同じ関数が使える
GoogleスプレッドシートでもXLOOKUPを使えます(2026年9月時点)。引数の順番はExcelと同じです。Excelのバージョンに縛られず、無料で試せるのが魅力です。
通常のExcelとスプレッドシートを併用している会社であれば、スプレッドシート側で先にXLOOKUPに慣れておくという進め方もあります。
ファイルのクラウド移行も考えている場合は、Google Drive・OneDrive・Dropboxの比較をご覧ください。
VLOOKUPからXLOOKUPへの置き換え手順
使えることが確認できたら、実際にVLOOKUPをXLOOKUPへ置き換える手順を見ていきましょう。まずはシンプルな式から一つずつ試していくことをおすすめします。以下では、置き換え前と置き換え後の式を並べてご紹介します。
シンプルな式から置き換える
最初は、商品コードから単価を引くだけの、いちばんシンプルな式から始めましょう。ここでは、A列に商品コード、B列に商品名、C列に単価が入った商品マスタを想定します。
在庫管理の表を作っている場合は、Excelで在庫管理をしている会社が最初につまずくことも参考になります。
E2に入力した商品コードをもとに、単価を取り出す式は次のようになります。
置き換え前(VLOOKUP)
=VLOOKUP(E2,$A$2:$C$100,3,FALSE)
置き換え後(XLOOKUP)
=XLOOKUP(E2,$A$2:$A$100,$C$2:$C$100)
「左から3番目」という番号の指定が消え、「A列(商品コード)を探して、C列(単価)を返す」という素直な形になりました。

IFERRORや左側参照の式を置き換える
ここでは、IFERRORで囲んでいた式と、左側の列を参照していた式の二つを置き換えます。
IFERRORで包んでいた式を置き換える
次に、目的の値が見つからなかったときに「該当なし」と表示していた式を置き換えてみます。VLOOKUPでは式全体をIFERRORで囲んでいましたが、XLOOKUPでは4つ目の指定として書き込むだけで済みます。
置き換え前(VLOOKUP)
=IFERROR(VLOOKUP(E2,$A$2:$C$100,3,FALSE),"該当なし")
置き換え後(XLOOKUP)
=XLOOKUP(E2,$A$2:$A$100,$C$2:$C$100,"該当なし")
式が短くなり、何をしているかがひと目でわかるようになりました。

左側の列を参照していた式を置き換える
商品名から、その左にある商品コードを引きたい。VLOOKUPでは直接できず、INDEXとMATCHの組み合わせが必要だったケースです。XLOOKUPなら、探す列と返す列を入れ替えて指定するだけで実現できます。
置き換え前(INDEXとMATCH)
=INDEX($A$2:$A$100,MATCH(E2,$B$2:$B$100,0))
置き換え後(XLOOKUP)
=XLOOKUP(E2,$B$2:$B$100,$A$2:$A$100)
複雑だった式が、基本の形とほとんど同じ書き方で済むようになります。

複数の条件で探す式を置き換える
同じ商品コードの中で、色やサイズ違いの商品名ごとに単価が分かれている場合を考えます。商品コードだけでは1行に絞れません。そこで、「商品コード」と「商品名」の両方が一致する行を探します。
VLOOKUPで同じことをするには、A列とB列をつないだ「作業列」を表の一番左に足す必要がありました。表の形が変わるため、ほかの式にも影響が出がちです。
XLOOKUPなら、表に列を足さずに式の中だけで済みます。E2に商品コード、F2に商品名を入力し、単価を取り出す式は次のとおりです。
置き換え後(XLOOKUP)
=XLOOKUP(E2&F2,$A$2:$A$100&$B$2:$B$100,$C$2:$C$100,"該当なし")
ポイントは「&」です。検索値と検索範囲の両方を「&」でつなぎます。
- 検索値:E2(商品コード)とF2(商品名)をつないだ文字
- 検索範囲:A列(商品コード)とB列(商品名)を行ごとにつないだもの
注意点がひとつあります。「&」でつなぐ範囲と戻り範囲は、行数をそろえてください(ここでは、どれも2行目から100行目)。行数がずれていると、エラーになります。
置き換えたあとに検算する
置き換えが終わったら、必ず結果を確認しましょう。おすすめは、しばらくの間、元のVLOOKUPの式と、新しいXLOOKUPの式を隣同士に並べておく方法です。両方の結果が同じであれば、置き換えは成功しています。
前任者が作り込んだ表を置き換える場合は、自己流で作り込んだExcelをAIは理解できるのか?もあわせてご覧ください。

数件だけでなく、存在しない商品コードや、表の最後の行など、少し特殊なケースでも同じ結果になるかを確認しておくと安心です。問題がないと確認できたら、元のVLOOKUPの列を削除して完成です。
置き換えた式は、しばらく元のVLOOKUPと隣に並べてください。存在しないコードや表の最後の行でも結果が同じかを確かめてから、元の列を消すと安心です。
VLOOKUPとXLOOKUPの使い分け
XLOOKUPは便利ですが、すべての式を今すぐ置き換える必要はありません。ファイルを開く相手と、今の式の状態で判断します。
VLOOKUPのままでよい場面
次のような場面では、VLOOKUPのまま使い続けても構いません。
- 社外の取引先など、Excel 2019以前を使う相手とファイルをやり取りする場合
- 既存の式が安定して動いていて、列を足す予定もない場合
XLOOKUPの式は、対応していないExcelで開くと「#NAME?」になります。取引先とのやり取りでは、相手のExcelのバージョンがわからないことも多いものです。共有するファイルでは、互換性を優先してください。
XLOOKUPを基本にしたい場面
次のような場面では、XLOOKUPを基本にすると後の手間が減ります。
- これから新しく作る表
- 列の追加や並べ替えが多い管理表
- 担当者が変わっても、式の意味が読み取れるようにしたい表
社内の全員が、XLOOKUPを使えるExcelを使っているとします。その場合、新しい表はXLOOKUPで作るのがおすすめです。
まとめ
- XLOOKUPは列の挿入に強く、エラー処理も式の中で完結する
- Excel 2019・2016では使えないので、先にバージョンを確かめる
- 共有するファイルは互換性を優先し、新しい表からXLOOKUPにする
VLOOKUPは今も現役の便利な関数です。それでも、XLOOKUPに置き換えると次の点が楽になります。
- 列を挿入しても式が壊れない
- エラー処理が式の中で完結する
- 左側の列も取り出せる
これは単に作業が楽になるだけでなく、あとから見た人が理解しやすい、壊れにくいファイルづくりの第一歩でもあります。
まずはお使いのExcelのバージョンを確認し、簡単な式から一つずつ置き換えてみてください。既存の式を無理にすべて書き換える必要はありません。新しく作る表からXLOOKUPを取り入れていくだけでも、Excelの表は扱いやすくなっていきます。
表引きに慣れてきたら、次は集計の自動化にも目を向けてみてはいかがでしょうか。手作業の集計をAIに任せる方法については、別の記事でご紹介しています。

担当者が変わっても困らないファイルづくりという観点では、属人化への対策もあわせて進めると効果的です。
属人化した業務をAIに任せる前にやることも参考にしてください。
前任者が作ったVLOOKUPやマクロの式が読めない場合は、AIに式を解読させる手順をまとめた記事をご覧ください。




コメント