リテラアップダウンロード

ExcelのINDEX関数の使い方|MATCH関数と組み合わせも

ExcelのINDEX関数の使い方

この記事では、Excel(エクセル)のINDEX関数の使い方について画像つきで分かりやすく解説します。またビジネスの現場でINDEX関数と共に用いられることの多いMATCH関数との組み合わせの方法についても丁寧に解説していきます。

基本から応用例まで具体例を使いながら紹介しますので、ぜひ参考にしてみてください。

ExcelのINDEX関数とは

ExcelのINDEX関数とは、セル範囲や配列の中から、指定した行と列が交差したセルの値を取得することができる関数です。

データベースのような二次元の表で、取得したいセル値があるアドレスが分かっている場合にはINDEX関数を単独で使用できます。

例えば画像のような例で、表内座標で4行3列目(D5)のセルにある値を求めるには「=INDEX(B2:E5,4,3)」とすれば「114」という値が取得できます。

ExcelのINDEX関数とは

ExcelのINDEX関数の書式【配列形式・参照形式】

Excel(エクセル)のINDEX関数の書式には、「配列形式」「参照形式」の2種類があります。

形式 書式
配列形式 =INDEX(配列,行番号,[列番号])
参照形式 =INDEX(参照,行番号,[列番号],[領域番号])

以下では、「配列形式」「参照形式」の書式や使い方について解説します。

  • INDEX関数の書式①「配列形式」
  • INDEX関数の書式②「参照形式」

INDEX関数の書式①「配列形式」

Excel(エクセル)のINDEX関数の書式「配列形式」について解説します。配列形式の書式は以下の通りです。

形式 書式
配列形式 =INDEX(配列,行番号,[列番号])

配列形式では、「配列」「行番号」「列番号」の3つの引数を用います。

第1引数:配列

1番目の引数は「配列」となります。この引数は必須で省略できません。セル範囲または配列定数を指定しましょう。

第2引数:行番号

第2引数は行番号です。第1引数で指定した範囲内の中で、求めたい値が何行目にあるかを数字で指定します。「0」を指定した場合は行全体を返します。第1引数で指定した「配列」が1行の時は省略することができます。

第3引数:列番号

3番目の引数は「列番号」です。第1引数で指定した範囲内の中で、求めたい値が何列目にあるかを数字で指定します。この引数は任意で、「0」を指定した場合列全体を返します。任意の引数ですが、第2引数「行番号」が省略されているときは必須の引数となります。

INDEX関数の書式②「参照形式」

Excel(エクセル)のINDEX関数の書式「参照形式」について解説します。参照形式の書式は以下の通りです。

形式 書式
参照形式 =INDEX(参照,行番号,[列番号],[領域番号])

参照形式では、「参照」「行番号」「列番号」「領域番号」の4つの引数を用います。

第1引数:参照

1番目の引数は「参照」となります。この引数は必須で省略することはできません。1つまたは複数のセル参照を指定します。離れているセル範囲を指定する時は、カッコ「()」で囲ってカンマ「,」で区切って指定します。

第2引数:行番号

第2引数は「行番号」です。この引数も必須となり省略することはできません。第1引数で指定した範囲内の行の位置を数値で指定します。「0」を指定した場合は行全体を返します。

第3引数:列番号

第3引数は「列番号」です。この引数は任意となりますので、省略してしまっても構いません。第1引数で指定した範囲内の列の位置を数値で指定します。こちらも第2引数と同様に「0」を指定した場合は列全体を返します。

第4引数:領域番号

第4引数の「領域番号」があるのが参照形式の特徴です。第1引数の「参照」で離れた複数の範囲を指定した場合、どの範囲を使用するか数値で指定します。

この引数も任意で、省略すると第1引数の「参照」で指定した範囲のうち1番目の範囲を使用します。

ExcelのINDEX関数の基本的な使い方

ExcelのINDEX関数の基本的な使い方をご紹介します。「ExcelのINDEX関数とは」の章で配列形式を使用したので、ここでは参照形式の例を使って解説します。

STEP.1
離れた(隣接しない)2つの表のデータを用意します。

ExcelのINDEX関数の基本的な使い方

STEP.2
ここでは表番号(領域番号)とセルの行番号・列番号をセル参照で指定しますので、参照するための欄を作成します。取得した値を表示するための欄も作成しましょう。

ExcelのINDEX関数の基本的な使い方

STEP.3
作成した欄に「=INDEX((B2:F6,I2:M6),C9,C10,C8)」と入力してください。今回の例では参照形式を使用するので、2つの範囲それぞれをカッコとカンマを使って記述しています。ここでは表2の5行3列目の値を取得します。

ExcelのINDEX関数の基本的な使い方

STEP.4
最後に取得したい値があるセルのアドレスを指定します。例では表2の5行3列目にある数値を指定しています。これで表2の5行3列目の値「7010」が取得されました。以上で操作は完了です。

ExcelのINDEX関数の基本的な使い方

今回は汎用性を高くするためにセル参照を用いましたが、もちろん関数の引数に行・列番号を直接入力してもOKです。

ExcelのINDEX関数とMATCH関数を組み合わせる使い方

次に、INDEX関数と組み合わせて用いられることが多いMATCH関数を紹介します。これら2つの関数を組み合わせることで、より現場で求められるような実践的な使い方が可能になります。

  • MATCH関数とは
  • INDEX関数とMATCH関数を複合した応用例

MATCH関数とは

MATCH関数は、指定した検査値が検査範囲の中で相対的にどの位置にあるかを求める関数です。ある項目が表のどこに記載されているかを調べる時などによく使用されます。

構文は「=MATCH(検査値, 検査範囲, 照合の型)」となっています。

第1引数は「検索する値またはセル参照」を、第2引数は「検査する範囲」を、第3引数は「照合の型(数値を検査する時の検査の仕方。-1,0,1の3つの数字で指定し、0は完全一致する時のみ検査対象となる。)」を指定します。

例えば売り上げ表で、「リンゴ」の売上げを知りたい場合を考えてみましょう。データ数が多くリンゴの項目がどこにあるか分からない時に、MATCH関数を使ってリンゴの項目の場所を探します。

MATCH関数とは

リンゴと記入されたセルの場所が分かれば、リンゴの売り上げもすぐに分かります。

INDEX関数とMATCH関数を複合した応用例

INDEX関数とMATCH関数を複合した応用例を解説します。先ほどの売り上げ表の例を使って、今度はリンゴの売り上げ金額を直接表示させるようにします。

売上表で「売り上げ金額」が入力されている列はC列と分かっているので、後は知りたい項目が表内でどの行にあるか分かればOKです。

ここで先ほどのようにMATCH関数を使って、リンゴの項目の表内での行番号を取得します。例では「=MATCH(F2, B2:B22, 0)」となります。

INDEX関数とMATCH関数を複合した応用例

次に取得した値を第2引数に用いてINDEX関数でリンゴの売り上げを取得します。例では「=INDEX(C2:C18,F3)」となります。これでリンゴの売り上げを直接表示することができました。

INDEX関数とMATCH関数を複合した応用例

ExcelのINDEX関数とSUMPRODUCT関数を組み合わせる使い方

次はExcel(エクセル)のINDEX関数と、SUMPRODUCT関数を組み合わせる使い方をご紹介します。複数の条件に一致するデータを取得するための、実用的な方法となります。

  • SUMPRODUCT関数とは
  • INDEX関数とSUMPRODUCT関数を複合した応用例

SUMPRODUCT関数とは

SUMPRODUCT関数は、ある範囲や配列に対応する要素の積を合計した結果を返してくれる関数です。条件に合致する項目の要素を合計したい時によく使用されます。

構文は「=SUMPRODUCT(配列1,[配列2],[配列3],…)」です。配列1から記載した全ての要素の積を合計します。

特に複数条件に一致する項目の数を合計することに有効です。論理式を使って「=SUMPRODUCT((理論式A)*(理論式B))」と記述すれば、AかつBを満たす件数をカウントすることができます。

例えば画像のような表で、「男かつ小学生」の人数を数えるためには「=SUMPRODUCT((B3:B13=”男”)*(C3:C13=”低学年”))」と入力します。

SUMPRODUCT関数とは

INDEX関数とSUMPRODUCT関数を複合した応用例

INDEX関数とSUMPRODUCT関数を複合した応用例を解説します。SUMPRODUCT関数で複数条件に合致する項目の行番号を求めて、INDEX関数で関連する情報を取得します。

例えば、ある商品データベースを使い「商品名」と「味」を入力すると合致する品番を表示してくれる仕組みをつくることができます。

INDEX関数とSUMPRODUCT関数を複合した応用例

関数の中身は「=INDEX(D3:D10,SUMPRODUCT((B3:B10=B13)*(C3:C10=C13)*(ROW(A1:A8))))」という記述になります。

少し複雑な構造になっていますが、INDEX関数の第2引数にSUMPRODUCT関数を使って「SUMPRODUCT((B3:B10=B13)*(C3:C10=C13)*(ROW(A1:A8)))」といったように複数条件に合致する項目の行番号を指定しています。

ROW 関数は参照しているセルやセル範囲の行番号を返す関数で、行番号(ここでは1~8)を割り振る役目をしています。

ExcelのINDEX関数の「#REFエラー」の原因・対応方法

INDEX関数で「#REF」エラーになる原因はいくつか考えられますが、よくある原因として第2引数や第3引数の指定が間違っていることがあります。

指定している行番号もしくは列番号が配列や参照で指定した範囲を超えており、値を正しく取得できないことが原因です。

このような間違えの背景に、INDEX関数で指定する列番号や行番号の指定の仕方を正しく覚えていないことが考えられるでしょう。表内の相対的な座標ではなくエクセルシートの絶対的な行番号や列番号を入力してしまい、表外のセルのアドレスを指定してしまうことでこのようなエラーが起きます。

ExcelのINDEX関数の「#REFエラー」の原因・対応方法

対応方法として、行・列番号の指定の仕方を正しく理解することが大事です。表内における番号と覚えておきましょう。

ExcelのINDEX関数の使い方を改めておさらい

ExcelのINDEX関数は、配列形式と参照形式の2通りの引数の指定の仕方がありました。複数の範囲がある時には参照形式を使うのが有効です。

またINDEX関数は単独でも使用できますが、MATCH関数やSUMPRODUCT関数と組み合わせると、より現場で使う形に即したシステムを構築することが可能です。

ぜひこれらの関数の使い方を覚えて、使い道を広げてみてください。