Menu

VLOOKUPとXLOOKUPの違い: どちらを使うべきか

XLOOKUPはVLOOKUPのできることをすべてこなし、既定で完全一致、列番号なし、左側の検索、見つからない場合の引数があります。ファイルをExcel 2019以前で開く必要があるときは、今でもVLOOKUPを使います。

このページのシートはすべて実際に動きます。数値や数式を変えると再計算されます。

XLOOKUPはVLOOKUPのできることをすべてこなし、間違える余地が少なくなっています。既定で完全一致になり、返す列を番号ではなく範囲で受け取り、左側も検索でき、「見つからない場合」の引数を持っています。ファイルをXLOOKUPのないExcel 2019以前で動かす必要があるときは、VLOOKUPを使います。下のシートでは、同じ検索を2通りで実行しています。

同じ検索を2つの関数で
G2
ABCDEFG
1ProductCategoryPriceStockLook forPear
2AppleFruit$1.2040VLOOKUP$1.50
3PearFruit$1.5025XLOOKUP$1.50
4CarrotVegetable$0.8060
5BreadBakery$2.4015
6MilkDairy$1.1030
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

どちらも$1.50を返します。それぞれの数式をクリックしてください。VLOOKUPは表A2:D6全体を枠で示してその中で3列数え、XLOOKUPは探す列と返す列だけを枠で示します。

VLOOKUPとXLOOKUPの比較

VLOOKUPXLOOKUP
ExcelのバージョンすべてExcel 2021、2024、Microsoft 365、Web版
既定の一致近似一致(4つ目の引数を省略した場合)完全一致
返す列表の中で数えた番号範囲
表の中に列を挿入したとき違う列を返すそのまま動く
左側の検索できないできる
値が見つからない#N/A、IFNAで囲む4つ目の引数、"Not found"
最後の一致できないsearch_modeを-1
複数の列をまとめて数式1つにつき1列(Microsoft 365では列番号に{2,3})複数列の戻り範囲でスピル
近似一致次に小さい値、データの並べ替えが必要次に小さい値か次に大きい値、順不同でよい
ワイルドカードFALSEで有効match_modeが2のときだけ
横方向の検索HLOOKUPが必要同じ関数

どちらも大文字と小文字を区別しません。完全一致では、XLOOKUPに下から探すよう指定しない限り、どちらも上から最初の一致を返します。

見つからない場合: IFNAと4つ目の引数

リストにない商品
G2
ABCDEFG
1ProductCategoryPriceStockLook forKiwi
2AppleFruit$1.2040VLOOKUP#N/A
3PearFruit$1.5025with IFNANot found
4CarrotVegetable$0.8060XLOOKUPNot found
5BreadBakery$2.4015
6MilkDairy$1.1030
#N/A 探している値が検索範囲にありません。

普通のVLOOKUPは#N/Aと表示します。VLOOKUPで文字列を表示するにはIFNAで囲む必要があり、XLOOKUPはそれを4つ目の引数で行います。G1にMilkと入力すると、3つとも$1.10になります。

左側の検索と列の移動

VLOOKUPの構造上の2つの制限は、列番号から来ています。探す列の右側にしか数えられず、表が変わっても番号は変わりません。CategoryとPriceの間に列を挿入しても、=VLOOKUP(G1,A2:D6,3,FALSE)は3列目、つまり新しい列を返し続けます。XLOOKUPは返す列を範囲で参照するので、Excelがほかの参照と同じように調整し、探す列もどこにあってもかまいません。

価格から商品を出す(左側)
G2
ABCDEFG
1ProductCategoryPriceStockPrice$0.80
2AppleFruit$1.2040XLOOKUPCarrot
3PearFruit$1.5025INDEX MATCHCarrot
4CarrotVegetable$0.8060
5BreadBakery$2.4015
6MilkDairy$1.1030
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

どちらもCarrotを返します。名前が価格の左側にあるので、VLOOKUP版はありません。古いExcelでの答えはG3のINDEX MATCHで、列を挿入しても壊れません。詳しくはINDEXとMATCHのページで説明しています。

近似一致を両方で

区分の検索では、VLOOKUPはTRUEを使い、最初の列を昇順に並べておく必要があります。XLOOKUPはmatch_modeの-1を使い、並べ替えは不要です。match_modeを1にすれば次に大きい値も求められますが、これはVLOOKUPにはできません。

売上に応じた手数料率
E2
ABCDE
1Sales fromRateSales4,200
200%VLOOKUP3%
310003%XLOOKUP3%
450005%
5100008%
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

4,200ではどちらも3%を返します。E1を10000に変えると、どちらも8%を返します。

VLOOKUPを使い続けるべきとき

  • Excel 2019、2016以前を使う人とファイルを共有する。 そこではXLOOKUPは#NAME?になります。どこでも動くもう1つの選択肢はINDEX MATCHです。
  • ブックに正しく動いているVLOOKUPがすでに何百もある。 書き直してもほとんど得るものはないので、新しい数式にXLOOKUPを使ってください。

速さはどちらかを選ぶ理由になりません。普通のシートではどちらも一瞬で、並べ替えたとても大きなリストでは、XLOOKUPのバイナリ検索(search_modeが2)もTRUEを指定したVLOOKUPも高速です。

Googleスプレッドシートは、どちらの関数も同じ引数で使えます。

練習: VLOOKUPを書き換える

VLOOKUPからXLOOKUPへ
G2
ABCDEFG
1ProductCategoryPriceStockLook forBread
2AppleFruit$1.2040Stock
3PearFruit$1.5025
4CarrotVegetable$0.8060
5BreadBakery$2.4015
6MilkDairy$1.1030
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

やってみよう: =VLOOKUP(G1,A2:D6,4,FALSE)はG1の商品の在庫を返します。G2に、同じ検索をXLOOKUPで書いてください。

よくある質問

XLOOKUPはVLOOKUPより優れていますか?

Excel 2021かMicrosoft 365で新しく作るなら、優れています。既定で完全一致になり、列が動くと壊れる列番号がなく、左側も検索でき、見つからない場合の文字列も組み込まれています。VLOOKUPのほうがよいのは、XLOOKUPが#NAME?になるExcel 2019以前でファイルを動かす必要があるときだけです。

XLOOKUPはVLOOKUPより速いですか?

普通のシートでは気づくほどの差はなく、どちらも数千行を一瞬で検索します。並べ替えたとても大きなデータでは、XLOOKUPのバイナリ検索モード(search_modeが2)のほうが線形検索より速く、TRUEを指定したVLOOKUPもバイナリで検索します。

XLOOKUPとINDEX MATCHの違いは何ですか?

どちらも同じ検索ができます。XLOOKUPは1つの関数で引数が簡単で、見つからない場合の引数もあります。INDEX MATCHはどのバージョンのExcelでも動きます。=XLOOKUP(F2,A2:A6,C2:C6)と=INDEX(C2:C6,MATCH(F2,A2:A6,0))は同じ値を返します。

VLOOKUPをXLOOKUPに書き換えるには?

検索値はそのままにし、表を最初の列と返していた列に分け、列番号とFALSEを外します:=VLOOKUP(F2,A2:D6,3,FALSE)は=XLOOKUP(F2,A2:A6,C2:C6)になります。

Coddyのプログラミング言語のイラスト

Coddyでコードを学ぼう

始める