
GoogleスプレッドシートのXMATCH関数は、MATCH関数の上位互換として使える関数です。引数が省略可能になったことで数式がよりシンプルになり、末尾からの検索やバイナリ検索など、柔軟なデータ検索が可能になりました。この記事では、XMATCHの基本的な使い方と、具体的な使用例をご紹介します。
XMATCH関数の基本
XMATCH関数の使い方

XMATCH関数は、指定した範囲の中で、検索キーの相対的な位置(数値)を返します。
たとえば、指定した範囲(例:A2:A4)から、「ばなな」が何番目にあるかを検索したい場合、数式は次のようになります。
例:=XMATCH("ばなな",A2:A4)
【ポイント】
- XMATCH関数は、第3引数の「一致モード」を省略した場合でも完全一致(
0)を検索するため、MATCH関数よりもシンプルに記述できます。
XMATCH関数の引数:(検索キー, 検索範囲, [一致モード], [検索モード])
一致モード(第3引数)

XMATCH関数の一致モードには、一致させる条件を、0、-1、1、2の数字で指定します。
たとえば、ワイルドカードを使用して「~を含む」を検索したい場合、数式は次のようになります。
例:=XMATCH("*みかん*",A2:A4,2)
【一致モード】
- 0(省略時):検索値と完全に一致する値のみ、一致とみなします。
- -1:完全一致する値がない場合に、検索値より小さい次に近い値を検索します。
- 1:完全一致する値がない場合に、検索値より大きい次に近い値を検索します。
- 2:ワイルドカード(
?、*)を使用した文字列に一致する値を、一致とみなします。
ワイルドカードとは、あいまい検索をする時に用いる、任意の文字列を示す特殊な記号です。基本的な解説は「ワイルドカードの使い方」の記事をご覧ください。
検索モード(第4引数)

XMATCH関数の検索モードには、検索する方向を、1、-1、2、-2の数字で指定します。
たとえば、検索値を範囲の末尾から検索したい場合、数式は次のようになります。
例:=XMATCH("りんご",A2:A4,0,-1)
【検索モード】
- 1(省略時):先頭から末尾に向かって検索します。
- -1:逆方向(末尾から先頭)に向かって検索します。
- 2:昇順に並べ替えられたデータを、バイナリ検索します。
- -2:降順に並べ替えられたデータを、バイナリ検索します。
バイナリ検索とは、まず中央値と検索値を比較し、検索範囲を2分割しながら検索していく方法のことです。二分探索法と言い、データ量が多いときに処理を高速化できます。
よくある質問
MATCH関数とXMATCH関数の違いは?
主な違いは以下の通りです。
- 一致モード:MATCH関数は、完全一致とするために
0の指定が必要です。 一方、XMATCH関数は、引数を省略した場合に完全一致となるため、数式がシンプルになります。 - 検索モード:XMATCH関数は、MATCH関数ではできなかった「末尾からの検索」や、「バイナリ検索」が可能です。 これにより、より柔軟な検索や処理の高速化が可能です。
条件に一致するデータをすべて抽出したい
結果として複数の値を抽出したい場合、FILTER関数が便利です。
別シートのデータを参照したい
別シートを参照したい場合、'シート名"!A2:B4のように範囲の前にシート名を追加します。
例:=XMATCH(A2,'データ'!A2:A4)
別のスプレッドシートを参照したい場合は、IMPORTRANGE関数を使ってデータを取り込む必要があります。詳しくは「IMPORTRANGE関数の使い方」をご覧ください。
具体的な使用例を知りたい
- クロス抽出する:INDEX関数と組み合わせて、行と列の2つの条件を指定し、クロスする位置の値を抽出します。(詳細記事はコチラ)