INDEX関数の使い方|行と列の番号で値を取り出す・MATCHとの組み合わせ・#REF!の原因

INDEX関数の使い方|行番号・列番号で値を取り出す

INDEX関数は、範囲の中の「何行目・何列目」を指定して、その位置の値を取り出す関数です。MATCH 関数と組み合わせると、VLOOKUP のように表から値を探せ、左の列も返せます。縦横の表から値を取り出すクロス検索にも使います。

この記事では、INDEX 関数の使い方を、基本の書き方、MATCH との組み合わせ、行全体を取り出す列番号 0、範囲を作る使い方、#REF! や「1つずれる」間違いまで、実際の Excel の画面で説明します。練習用のファイルも無料でダウンロードできます。

練習用Excelファイル(無料ダウンロード)
「基本」「MATCHと組み合わせ」「範囲を作る」「よくある間違い」と、記事内のツールと同じ「サンプル」の5シートです。
Excelファイル(.xlsx)/登録不要/数式・練習データ入り
目次

INDEX関数の書き方(構文)

=INDEX(配列, 行番号, [列番号])
引数意味
配列値を取り出す範囲(B2:D6 など)
行番号範囲の上から何行目か。0 にすると列全体
列番号(省略可)範囲の左から何列目か。0 にすると行全体。1列だけの範囲なら省略できる

番号は範囲の中での位置です。シートの行番号ではありません。INDEX はすべてのバージョンの Excel で使えます。

基本の使い方:行と列の番号で値を取り出す

手順:G3 に INDEX の式を入れて Enter

商品ごとの月別の表(B2:D6)から、G1 の行番号・G2 の列番号に当たる値を取り出します。 G3 に次の式を入力して、Enter キーを押します❶。

G3 に入れる式
=INDEX(B2:D6,G1,G2)
B2:D6 配列(値の部分)G1 行番号(3)G2 列番号(2)
ひとことで商品ごとの月別の表の、上から 3 行目・左から 2 列目の値を取り出す
式を分けて読むと(色は画像の枠と同じ)
配列B2:D6
どの表から?
→ 数値の部分(見出しは入れない)
行番号G1
上から何行目?
→ G1 の 3(ぶどう)
列番号G2
左から何列目?
→ G2 の 2(5月)
自分の表で使うときは
青に「取り出したい表」、オレンジと紫に「何行目・何列目か」を入れます。番号は MATCH 関数で求めることが多いです。例:表 B2:M20 の、H1 行目・H2 列目の値=INDEX(B2:M20,H1,H2)
  • 範囲より大きい番号(ここでは 6 行目)を指定すると #REF! になりました。
エクセルのINDEX関数で表の3行目・2列目の値を取り出す式と、配列・行番号・列番号を色分けした画面
エクセルのINDEX関数で表の3行目・2列目の値を取り出す式と、配列・行番号・列番号を色分けした画面

確認:400 は 3 行目(ぶどう)と 2 列目(5月)が交わる値

エクセルのINDEX関数で、表の3行目ぶどうと2列目5月が交わる400を取り出したことを色で示した画面
エクセルのINDEX関数で、表の3行目ぶどうと2列目5月が交わる400を取り出したことを色で示した画面

答えは 400 になりました❷。式は、次の順に計算しています。

  1. 表(B2:D6)の上から 3 行目を見る
    ⇒ ぶどうの行
  2. その行の左から 2 列目を取り出す
    ⇒ 5月の 400
ヒント:1 列だけなら列番号は省ける
=INDEX(A2:A6,3) は「ぶどう」です。2 列以上の範囲で列番号を省いた =INDEX(B2:D6,2) は #REF! でした。

まず動かしてみよう|この記事のサンプルをその場で試せます

ブラウザの上で INDEX 関数を試せます。B2 の式は =INDEX(D2:E4,A2,2) で、区分の番号(A2)から名前(会社員・自営業・その他)を取り出します。練習用ファイルの「サンプル」シートと同じ表です。

MATCH と組み合わせて表から探す

INDEX の行番号・列番号に MATCH を入れると、「もも」の「5月」のように見出しから探して取り出せます。結果は 320 です(MATCH関数の使い方)。

=INDEX(B2:D6,MATCH(G1,A2:A6,0),MATCH(G2,B1:D1,0))
エクセルのINDEXとMATCHで商品と月から値を取り出した例
エクセルのINDEXとMATCHで商品と月から値を取り出した例

列番号を 0 にすると、ももの行全体(300・320・280)が横に広がって返りました。SUM で囲むと3か月の合計 900 です。行番号を 0 にした場合は、列全体(4月の5件)が縦に返りました。

=SUM(INDEX(B2:D6,MATCH(G1,A2:A6,0),0))

INDEX で「範囲」を作る

INDEX はセルの位置(参照)を返すので、B2:INDEX(B2:B6,3) のように範囲の終わりに使えます。G1 の件数を変えると、合計する範囲が伸び縮みします。上から3件の合計は 650 でした。

=SUM(B2:INDEX(B2:B6,G1))
エクセルのINDEX関数で合計する範囲を作った例
エクセルのINDEX関数で合計する範囲を作った例

よくある間違い

エクセルのINDEXとMATCHで範囲がずれて1つずれた値が出る例
エクセルのINDEXとMATCHで範囲がずれて1つずれた値が出る例

INDEX と MATCH の範囲の始まりの行がずれると、1つずれた値が返ります。試したところ、INDEX の範囲を1行目から(A1:A6)にすると、「ぶどう」を探したのに「みかん」が返りました。2つの範囲は同じ行から始めます。

症状考えられる原因対処
1つずれた値が出るINDEX と MATCH の範囲の始まりの行が違う2つの範囲を同じ行から始める。
#REF! になる行番号・列番号が範囲より大きい/2列以上の範囲で列番号を省略した範囲の大きさと番号を確かめる。
#N/A になるMATCH が見つけられないIFERROR で表示を決める(IFERROR関数)。
値が横・縦にいくつも出る行番号か列番号が 01つだけなら 0 以外の番号にする。

番号に小数(2.9)を入れると切り捨てて 2 として扱われ、文字の「2」も 2 として扱われました。

よくある質問

INDEX+MATCH と XLOOKUP、どちらを使えばいいですか?

Microsoft 365・Excel 2021 以降なら XLOOKUP のほうが短く書けます。INDEX+MATCH はすべてのバージョンで使え、縦横のクロス検索や行全体の取り出しも得意です(XLOOKUP関数の使い方)。

複数の表から切り替えて取り出せますか?

INDEX の4つ目(領域番号)で、どの表から取り出すかを選べます(AREAS関数とINDEXの領域番号・INDEX関数で複数の表を切り替える方法)。

練習問題で確かめたいときは?

INDEX・MATCH関数の練習問題10問で、位置の調べ方からクロス検索・複数条件まで練習できます。

練習用Excelファイル(無料ダウンロード)
この記事の例がすべて入った練習用のファイルです。
Excelファイル(.xlsx)/登録不要/数式・練習データ入り

あわせて読みたい:INDEX関数の関連記事

縦に並んだリストを表の形にするときは、縦に並んだリストを表にする方法もあわせてご覧ください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

目次