Menu

XMATCH関数の使い方: 位置の検索、最後の一致、次に大きい値

=XMATCH(E2,A2:A6)はA2:A6の中でのE2の位置を返し、既定で完全一致になります。並べ替えなしで次に小さい値や大きい値を探したり、下から検索したり、ワイルドカードを使ったりもできます。

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

=XMATCH(E2,A2:A6)は、A2:A6の中でのE2の位置を返します。最初のセルなら1、2番目なら2です。MATCHと違い、指定しなければ完全一致で探します。XMATCHにはExcel 2021かMicrosoft 365が必要です。古いバージョンではMATCH(E2,A2:A6,0)を使ってください。

商品の位置
F2
ABCDEF
1ProductCategoryPriceLook forPosition
2AppleFruit$1.20Carrot3
3PearFruit$1.50
4CarrotVegetable$0.80
5BreadBakery$2.40
6MilkDairy$1.10
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

Carrotは3番目の項目なので、F2には3と表示されます。Kiwiと入力すると#N/Aを返します。Excelのほかの検索と同じく、大文字と小文字は区別しません。

XMATCH関数の構文

=XMATCH(lookup_value, lookup_array, [match_mode], [search_mode])
引数値
match_mode(一致モード)0完全一致(既定)、-1完全一致または次に小さい値、1完全一致または次に大きい値、2ワイルドカード一致
search_mode(検索モード)1最初の項目から(既定)、-1最後の項目から、2昇順のバイナリ検索、-2降順のバイナリ検索

バイナリのモードは、並べ替えたとても大きなリストで速くなりますが、並べ替えていないリストでは間違った位置を返します。ほかのモードは順不同のデータでも使えます。

並べ替えずに次に小さい値や大きい値を探す

match_modeを1にすると、検索値以上で最小の値を探します。サイズが順不同に並んでいても、「入るいちばん小さい箱」に答えられます。MATCHなら、リストを大きい順に並べておく必要があります。

品物が入るいちばん小さい箱
E2
ABCDE
1BoxHolds (liters)Item (liters)18
2S5Position4
3XL50BoxL
4M12
5L25
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

18リットルが入るサイズは25と50で、小さいほうは4番目の項目25、箱Lです。E1を12にすると完全一致(M)に、40にするとXLになります。match_modeの-1は逆で、検索値以下の最大の値を探します。税率の区分や手数料の段階に使う規則です。XLOOKUPにも同じ2つのモードがあり、値を直接返します。

最後の項目から検索する

search_modeを-1にすると下から探し始めるので、XMATCHは最後に一致した位置を返します。位置は範囲の上から数えたままです。

顧客の最後の注文
F2
ABCDEF
1DateCustomerAmountCustomerBen
22026-03-02Ben120Last position5
32026-03-05Ana80Last date2026-03-20
42026-03-09Ben45First position1
52026-03-12Cara200
62026-03-20Ben60
72026-03-24Ana95
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

Benは位置1、3、5に出てきます。先頭からの検索は1を、末尾からの検索は5を返し、それは2026-03-20の注文です。XMATCHが登場する前は、最後の位置を求めるのに配列の工夫が必要でした:=MATCH(2,1/(B2:B7=F1))。

ワイルドカードにはmatch_modeの2が必要

match_modeが2のとき、*は任意の文字を、?はちょうど1文字を表します。ほかのモードでは普通の文字です。一方MATCHは、match_typeが0なら常にワイルドカードとして扱います。

パターンで探す
D2
ABCD
1ProductPatternPosition
2Green tea*coffee2
3Iced coffee?lack*4
4Coffee beans
5Black tea
6Orange juice
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

*coffee(「coffee」で終わるもの)は位置2のIced coffeeに、?lack*は位置4のBlack teaに一致します。パターンの最後に*がないので、Coffee beansは*coffeeに一致しません。match_modeが2でないと同じパターンは文字そのものとして探されるので、Excelでは次の1つ目が#N/Aを返します:

=XMATCH("*coffee", A2:A6)        #N/A: no cell is literally "*coffee"
=XMATCH("*coffee", A2:A6, 2)     2

XMATCHとMATCHの違い

MATCHXMATCH
モードを省略したときの既定近似一致(1)、データの並べ替えが必要完全一致
次に小さい値1、昇順に並べたデータ-1、順不同でよい
次に大きい値-1、降順に並べたデータ1、順不同でよい
ワイルドカード0なら常に有効match_modeが2のときだけ
最後の一致できないsearch_modeを-1
バージョンすべてExcel 2021とMicrosoft 365

符号が逆になっています。MATCHの-1は次に大きい値を、XMATCHの-1は次に小さい値を探します。MATCH(E2,A2:A6,0)をXMATCHに書き換えるときは0を外し、近似一致のMATCHを書き換えるときは符号を反転します。そうすれば並べ替えの順番は関係なくなります。古いほうの関数はMATCHのページで説明しています。

練習: 最後の注文の位置

注文
F2
ABCDEF
1DateCustomerAmountCustomerBen
22026-03-02Ben120Last position
32026-03-05Ana80
42026-03-09Ben45
52026-03-12Cara200
62026-03-20Ben60
72026-03-24Ana95
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

やってみよう: F2で、F1の顧客の最後の注文の位置を返してください。

よくある質問

MATCHとXMATCHの違いは何ですか?

XMATCHは既定で完全一致です(MATCHの既定は近似一致)。並べ替えたデータがなくても次に小さい値や大きい値を探せ、最後の項目から上へ検索でき、*と?をワイルドカードとして扱うのは一致モード2を指定したときだけです。Excel 2021かMicrosoft 365が必要です。

XMATCHで最後に出てくる位置を探すには?

4つ目の引数search_mode(検索モード)を-1にします:=XMATCH("Ben",B2:B7,0,-1)はB2:B7で最後のBenの位置を返します。位置は範囲の上から数えたままです。

何も一致しないとき、XMATCHは何を返しますか?

MATCHと同じく#N/Aです。別のものを表示するならIFNAで囲みます:=IFNA(XMATCH(E2,A2:A6),"Not in list")。

INDEXの中のMATCHをXMATCHに置き換えられますか?

置き換えられます。=INDEX(C2:C6,XMATCH(E2,A2:A6))はMATCH(E2,A2:A6,0)を使ったINDEXと同じように動き、0を書き忘れる心配もありません。ファイルをExcel 2019以前で開く必要があるならMATCHを使います。

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

Coddyでコードを学ぼう

始める