INDEX関数・MATCH関数の練習問題を10問用意しました。MATCH で位置を調べる、INDEX で取り出す、2つを組み合わせた表引き、左の列を返す、見つからないとき、縦横のクロス検索、近似一致、複数条件、ワイルドカード、行全体の合計まで、順番に練習できます。
問題・解答と、問題で使う表(商品・評価表・店舗別)が入った練習用のファイルを無料でダウンロードできます。答えはすべて実際の Excel で計算して確かめています。INDEX と MATCH はどのバージョンの Excel でも使えます。
練習用ファイルの使い方
- 練習用のファイルをダウンロードして開き、「問題」シートを表示します。
- 黄色のセル(E4:E13)に、問題に合う式を入れます。右の列にヒントがあります。
- 「解答」シートで、答えと式を確かめます(H列に式を文字で書いてあります)。

問題6・10では「店舗別」シートを使います。商品と評価表は XLOOKUP の練習問題と同じ表なので、解き比べることもできます。

問題の一覧
| No. | 問題 | 入力値 |
|---|---|---|
| 1 | 商品名「ぶどう」が、商品名の列(B2:B9)の何番目にあるかを出してください。 | ぶどう |
| 2 | 商品名の列(B2:B9)の、入力した番目の商品名を出してください。 | 5 |
| 3 | コード 105 の商品名を出してください(INDEX と MATCH を組み合わせる)。 | 105 |
| 4 | 商品名「みかん」のコードを出してください(返す列が左側)。 | みかん |
| 5 | コード 109 は登録がありません。「未登録」と表示してください。 | 109 |
| 6 | 店舗別シートで、入力した店舗の「5月」の売上を出してください。 | 駅前店 |
| 7 | 点数 78 点の評価(評価表)を出してください。 | 78 |
| 8 | 分類が「野菜」で、単価が 150 以上の最初の商品名を出してください。 | 野菜 |
| 9 | 名前が「ぶ」で始まる商品の単価を出してください。 | ぶ* |
| 10 | 店舗別シートで、入力した店舗の4月〜6月の合計を出してください。 | 本店 |
まずは自分で解いてみてから、下の解答と解説を見てください。
問題1の解答と解説
問題:商品名「ぶどう」が、商品名の列(B2:B9)の何番目にあるかを出してください。(入力値は D4)
=MATCH(D4,商品!$B$2:$B$9,0)
答え:3 ヒント:MATCH(探す値,範囲,0) で、何番目にあるかが分かります。0 は完全一致です。
商品名の列は りんご・みかん・ぶどう… の順なので、ぶどうは3番目です。MATCH は値そのものではなく「位置(番号)」を返します(MATCH関数の使い方)。
問題2の解答と解説
問題:商品名の列(B2:B9)の、入力した番目の商品名を出してください。(入力値は D5)
=INDEX(商品!$B$2:$B$9,D5)
答え:トマト ヒント:INDEX(範囲,何番目) で、その位置の値を取り出します。
商品名の列の5番目はトマトです。INDEX は「範囲の中の何番目」を取り出します。試したところ、範囲(8行)を超える9番目を指定すると #REF! になりました(INDEX関数の使い方)。
問題3の解答と解説
問題:コード 105 の商品名を出してください(INDEX と MATCH を組み合わせる)。(入力値は D6)
=INDEX(商品!$B$2:$B$9,MATCH(D6,商品!$A$2:$A$9,0))
答え:トマト ヒント:MATCH で何番目かを調べ、その番号を INDEX に渡します。
MATCH(105,コードの列,0) で 5(5番目)を求め、INDEX(商品名の列,5) でトマトを取り出します。INDEX の範囲と MATCH の範囲は、同じ行(2〜9行目)から始めます。試したところ、INDEX の範囲を1行目から($B$1:$B$9)にすると、1つずれて「キャベツ」が出ました。
問題4の解答と解説
問題:商品名「みかん」のコードを出してください(返す列が左側)。(入力値は D7)
=INDEX(商品!$A$2:$A$9,MATCH(D7,商品!$B$2:$B$9,0))
答え:102 ヒント:INDEX と MATCH は、返す列が探す列より左でも使えます。
MATCH で商品名の列からみかんの位置(2)を求め、コードの列の2番目(102)を返します。VLOOKUP と違い、返す列が左にあっても使えます。
問題5の解答と解説
問題:コード 109 は登録がありません。「未登録」と表示してください。(入力値は D8)
=IFERROR(INDEX(商品!$B$2:$B$9,MATCH(D8,商品!$A$2:$A$9,0)),"未登録")
答え:未登録 ヒント:見つからないと MATCH が #N/A になります。IFERROR で置き換えます。
109 は一覧に無いので、MATCH が #N/A になります。IFERROR で囲んで「未登録」と表示します(IFERROR関数)。
問題6の解答と解説
問題:店舗別シートで、入力した店舗の「5月」の売上を出してください。(入力値は D9)
=INDEX(店舗別!$B$2:$D$4,MATCH(D9,店舗別!$A$2:$A$4,0),MATCH("5月",店舗別!$B$1:$D$1,0))
答え:950 ヒント:INDEX(表,行の番号,列の番号) の行と列を、それぞれ MATCH で求めます。
行の番号は MATCH(駅前店,店舗の列,0) で 2、列の番号は MATCH(“5月”,見出し,0) で 2。INDEX(表,2,2) で 950 になります。縦と横の見出しで交わる値を取り出す「クロス検索」です(クロス検索の方法)。

問題7の解答と解説
問題:点数 78 点の評価(評価表)を出してください。(入力値は D10)
=INDEX(評価表!$B$2:$B$6,MATCH(D10,評価表!$A$2:$A$6,1))
答え:B ヒント:MATCH の3つ目を 1 にすると「以下でいちばん近い値」を探します(表は小さい順)。
MATCH の3つ目を 1 にすると、78 以下でいちばん大きい 70 の位置を探し、評価の B を返します。試したところ、3つ目を 0(完全一致)にすると 78 が表に無いので #N/A になりました。評価表は点数の小さい順に並べておきます。
問題8の解答と解説
問題:分類が「野菜」で、単価が 150 以上の最初の商品名を出してください。(入力値は D11)
=INDEX(商品!$B$2:$B$9,MATCH(1,(商品!$C$2:$C$9=D11)*(商品!$D$2:$D$9>=150),0))
答え:キャベツ ヒント:2つの条件を掛け算した 1 を、MATCH で探します。
(分類=野菜)*(単価>=150) は、両方を満たす行だけ 1 になります。その 1 を MATCH で探すと、条件に合う最初の商品「キャベツ」が出ます(INDEX+MATCHで複数条件検索)。
問題9の解答と解説
問題:名前が「ぶ」で始まる商品の単価を出してください。(入力値は D12)
=INDEX(商品!$D$2:$D$9,MATCH(D12,商品!$B$2:$B$9,0))
答え:450 ヒント:MATCH は完全一致(0)のとき、* などのワイルドカードが使えます。
MATCH の3つ目が 0 のとき、「ぶ*」のようなワイルドカードが使えます。ぶどうの位置を求めて、単価の 450 を返します。
問題10の解答と解説
問題:店舗別シートで、入力した店舗の4月〜6月の合計を出してください。(入力値は D13)
=SUM(INDEX(店舗別!$B$2:$D$4,MATCH(D13,店舗別!$A$2:$A$4,0),0))
答え:4050 ヒント:INDEX の列番号を 0 にすると、その行全体を返します。それを SUM で合計します。
INDEX の列番号を 0 にすると、本店の行全体(1200・1350・1500)を返します。SUM で合計すると 4050 です。

よくある間違い

実際に試した、よくある間違いの例です。上(問題3)は INDEX の範囲を1行目から指定したため1つずれた商品が出て、下(問題7)は近似一致のところを 0 にしたため #N/A になりました。
| 症状 | 考えられる原因 | 対処 |
|---|---|---|
| 1つずれた値が出る | INDEX と MATCH の範囲の始まりの行が違う | 2つの範囲を同じ行から始める(問題3)。 |
| #N/A になる | 一覧に無い値・近似一致を 0 で探した | IFERROR で表示を決める。「以上〜未満」は MATCH の3つ目を 1(問題5・7)。 |
| #REF! になる | 範囲の行数・列数を超える番号を指定した | 範囲の大きさを確かめる(問題2)。 |
| 下にコピーすると結果がずれる | 範囲に $ が付いていない | 商品!$B$2:$B$9 のように固定する(絶対参照)。 |
よくある質問
INDEX・MATCH と XLOOKUP、どちらを練習すればいいですか?
Microsoft 365・Excel 2021 以降なら XLOOKUP が短く書けます。INDEX・MATCH はどのバージョンでも使え、問題6のような縦横の表引きや、問題10の行全体の取り出しも得意です。両方できると、どの会社の Excel でも困りません(XLOOKUP関数の練習問題)。
問題を自分で増やせますか?
入力値(D列)を書き換えると、別の商品や店舗で練習できます。たとえば問題10の「本店」を「北店」にすると、600+700+820 で 2120 になります。
ほかの関数の練習問題もありますか?
VLOOKUP・IF・COUNTIF・SUMIF・日付関数・文字列関数の練習問題があります。

コメント