Menu

MATCH関数の使い方: Excelで値の位置を探す

=MATCH(E2,A2:A6,0)はA2:A6の中でのE2の位置を返します。4番目の項目なら4です。照合の種類0、1、-1、ワイルドカード、大文字と小文字を区別した一致、値がリストにあるかどうかの判定を学びます。

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

=MATCH(E2,A2:A6,0)は、A2:A6の中でのE2の値の位置を返します。最初のセルなら1、2番目なら2という具合です。0は完全一致を求めるという意味です。MATCHが返すのは値そのものではなく数値なので、たいていはINDEXと組み合わせて使います。

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

BreadはA2:A6の4番目のセルなので、F2には4と表示されます。数え始めるのはシートの1行目ではなく範囲の最初のセルです。範囲をA1:A6に変えると、答えは5になります。E2にKiwiと入力すると、MATCHは#N/Aを返します。

MATCH関数の構文と照合の種類

=MATCH(lookup_value, lookup_array, [match_type])
match_type(照合の種類)探すものリストの並び
0lookup_valueと完全に等しい最初の値。文字列ではワイルドカードを使えます。順不同でよい
1または省略lookup_value以下の最大の値。昇順
-1lookup_value以上の最小の値。降順

既定値は0ではなく1です。並べ替えていない名前のリストで3つ目の引数のないMATCHを使っても、エラーにはなりません。別の行のものかもしれない位置を返すだけです。文字列、コード、IDを検索するときは、毎回0を書いてください。

近似一致: 値がどの区分に入るか

照合の種類が1のとき、MATCHは「どの区分か」に答えます。値が到達した最後のしきい値の位置です。ここでは75点が0、60、70を超えているので、区分3、成績Cになります。

点数の区分
E2
ABCDEF
1Min scoreGradeScoreBandGrade
20F753C
360D591F
470C905A
580B1005A
690A
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

59はまだ60未満なので、区分1(F)です。90は最後のしきい値と完全に一致し、100はそれを超えているので、どちらも区分5(A)になります。しきい値は昇順のままにしておく必要があります。それによってMATCHが正しい場所で止まれるからです。

照合の種類-1は、大きい順に並べたリストに対する鏡写しの動きです。検索値以上で最小の値の位置を返します。列にサイズ{50;25;12;5}があるとき、=MATCH(18,D2:D5,-1)は2を返します。18が入る最小のサイズである25です。

ワイルドカードと大文字・小文字

MATCHは大文字と小文字を区別せず、照合の種類が0のときはワイルドカード*(任意の文字)と?(ちょうど1文字)を受け付けます。大文字と小文字を区別して一致させるには、リストをEXACTで比べて最初のTRUEを探します。

文字列を一致させる3つの方法
E1
ABCDE
1ProductCategoryPriceStarts with "C"3
2AppleFruit$1.20Lower case "milk"5
3PearFruit$1.50Exactly "milk"#N/A
4CarrotVegetable$0.80
5BreadBakery$2.40
6MilkDairy$1.10
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

"C*"はCarrotに一致し、位置は3です。大文字と小文字は区別されないので、"milk"は5番目のMilkを見つけます。EXACT版は各名前を大文字小文字まで含めて「milk」と比べ、TRUEが見つからないので#N/Aを返します。A6をmilkに変えると5を返します。Excel 2019以前では、EXACTの数式をCtrl+Shift+Enter(MacではCmd+Shift+Enter)で確定します。Excel 2021とMicrosoft 365ではEnterだけで十分です。チルダを付けるとワイルドカードが普通の文字になります。"~*"は本物のアスタリスクを探します。

値がリストにあるか調べる

MATCHは値が見つかれば数値を、見つからなければ#N/Aを返します。ISNUMBERでそれをTRUEかFALSEに変えれば、「リストにあるか」をすばやく判定できます。

注文した品のうち在庫があるのは?
B2
ABCD
1OrderedIn stock?In stock
2PearYesApple
3KiwiNoPear
4MilkYesBread
5PlumNoMilk
6BreadYes
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

Pear、Milk、BreadはD2:D5にあるので、Yesと表示されます。KiwiとPlumはNoです。COUNTIF($D$2:$D$5,A2)>0でも同じ答えになります。MATCHは最初に見つかったところで止まり、COUNTIFはすべてを数えます。

MATCH、XMATCH、INDEX

MATCHは、INDEXとMATCHのページで説明している定番の検索=INDEX(C2:C6,MATCH(E2,A2:A6,0))の半分を担っています。Excel 2021とMicrosoft 365にはXMATCHが加わりました。既定で完全一致になり、最後の項目から上へ検索でき、降順に並べなくても「次に大きい値」を扱えます。それでもMATCHはどこでも動くので、Excel 2019で開く必要があるファイルでも使えます。

練習: 社員の位置

チームのリスト
F2
ABCDEF
1NameTeamStart yearNamePosition
2AnaSales2019Dev
3BenSupport2021
4CaraSales2018
5DevFinance2022
6EliSupport2020
7FayFinance2023
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

やってみよう: F2で、E2の名前がA列のリストの何番目にあるかを返してください。

よくある質問

ExcelのMATCHは何を返しますか?

値ではなく位置を返します。BreadがA2:A6の4番目のセルなら、=MATCH("Bread",A2:A6,0)は4を返します。INDEXと組み合わせると、別の列のその位置の値を取り出せます。

照合の種類0、1、-1の違いは何ですか?

0は順不同のリストで完全一致を探します。1(既定値)は検索値以下の最大の値を探し、リストが昇順に並んでいる必要があります。-1は検索値以上の最小の値を探し、リストが降順に並んでいる必要があります。

MATCHは大文字と小文字を区別しますか?

区別しません。=MATCH("milk",A2:A6,0)はMilkを見つけます。区別して一致させるには=MATCH(TRUE,EXACT(A2:A6,"milk"),0)を使います。Excel 2019以前では、Ctrl+Shift+Enter(MacではCmd+Shift+Enter)で確定する必要があります。

MATCHで値がリストにあるかどうかを調べるには?

値がないとMATCHは#N/Aを返すので、数値が返ったかどうかを判定します:=ISNUMBER(MATCH(A2,$D$2:$D$5,0))はTRUEかFALSEを返します。自分で決めた文字列にするならIFで囲みます。

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

Coddyでコードを学ぼう

始める