MATCH関数の使い方|何番目にあるかを調べる
※写真はイメージです
書き方はこれだけ
=MATCH(探す値, 探す範囲, 0)MATCHは、探す値が範囲の中の上から(左から)何番目にあるかを数字で返す関数です。3つ目は、ほぼ毎回 0(ぴったり同じもの)で大丈夫です。正直、MATCH単体で使うことは少なくて、INDEXと組み合わせるか、VLOOKUPの「何列目」を自動で数えるときに使うのがほとんどです。
この図の表をExcelファイルでダウンロード(問題と答えのシートつき)
3つ目(照合の種類)の違い
| 3つ目 | 探し方 | 使う場面 |
|---|---|---|
| 0 | ぴったり同じ値を探す。並べ替えは不要 | コード・名前・番号を探す(ふだんはこれ) |
| 1(省略したとき) | 探す値以下でいちばん大きい値。範囲を小さい順に並べておく | 点数の区切り表、送料の区分表 |
| -1 | 探す値以上でいちばん小さい値。範囲を大きい順に並べておく | あまり使いません |
気をつけたいのは、3つ目を省略すると 0 ではなく 1 になることです。並べ替えていない表で省略すると、エラーにならずに違う番号が返ってきて、気づきにくいです。なので、迷ったら必ず0を書いてください。
よく使う例
| やりたいこと | 式 |
|---|---|
| INDEXと組み合わせて取り出す(左の列も取れる) | =INDEX(B:B,MATCH(D2,A:A,0)) |
| VLOOKUPの列番号を見出しから数える | =VLOOKUP(F2,A:D,MATCH(G1,A1:D1,0),FALSE) |
| 表にあるかどうかだけ調べる | =IF(ISNUMBER(MATCH(D2,A:A,0)),"あり","なし") |
| 「〇〇を含む」で探す(文字のみ) | =MATCH("*"&D2&"*",B:B,0) |
VLOOKUPの「何列目」をMATCHで数える
VLOOKUPの3つ目を「3」のように数字で書いていると、表の途中に列を足したときにずれます。見出しの名前からMATCHで数えておけば、列を足しても、見出しの順番を変えても大丈夫です。
Microsoft 365・Excel 2021以降なら、MATCHの新しい版の XMATCH も使えます。こちらは3つ目を省略するとぴったり一致になるので、省略の事故が起きません。
うまくいかないとき
1#N/A になる
探す値が範囲の中にありません。前後の空白、全角・半角の違い、数字が文字で入っている、のどれかが多いです。
直し方TRIMで空白を消すか、数字と文字をそろえます。
2違う番号が返ってくる
3つ目を省略していて、「以下でいちばん大きい値」で探しています。
直し方3つ目に 0 を書きます。
3番号が1つずれる
探す範囲を見出しの行から始めているか、INDEXと範囲の始まりがずれています。
直し方MATCHの範囲とINDEXの範囲を、同じ行から始めます。
サンプルファイルで試す
黄色のセルにMATCHの式を入れて、「答え」のシートと比べてください。
よくある質問
MATCH関数とは?
探す値が範囲の中で上から(左から)何番目にあるかを数字で返す関数です。=MATCH(探す値,探す範囲,0) と書きます。
MATCHの3つ目の0・1・-1の違いは?
0はぴったり同じ値、1は探す値以下でいちばん大きい値(小さい順に並べておく)、-1は探す値以上でいちばん小さい値(大きい順に並べておく)です。省略すると1になります。
MATCHはどんなときに使いますか?
INDEXと組み合わせて表から値を取り出すときや、VLOOKUPの列番号を見出しから自動で数えるときに使います。
MATCHが#N/Aになります
探す値が範囲にありません。空白や全角・半角の違い、数字が文字で入っていないかを確かめてください。
一緒に覚えたい関数・操作
このページについて
操作の説明は Microsoft 365 の日本語版Excel(Windows)に合わせています。図はこのサイトで作ったもので、表の会社名・商品名・人名は架空です。運営者情報