これがINDEX関数!初心者でもできる使い方ガイド

INDEX関数 機能
この記事は約14分で読めます。

INDEX関数とは?

INDEX関数とは、指定した行と列が交差する位置にあるセルやセルの値を抽出してくれる関数です。
INDEX関数単体で使用するよりも、他の関数と一緒に組み合わせて使用することで、とても便利な働きをしてくれます。

INDEX関数をより便利に使用するために、ここではINDEX関数の基本的な動きと、いくつか他の関数と組み合わせた使用例をご紹介したいと思います。

練習用エクセルファイルを用意したので、必要な方は下記よりダウンロードしてくださいね。

基本の動き

INDEX関数には下記2つの書式があります。

INDEX関数の書式
  • 配列形式
    行番号と列番号で指定されるテーブルまたは配列の要素の値を返します。
    INDEX関数の第1引数が配列定数の時は配列形式を使用します。
  • セル範囲形式
    指定された行と列が交差する位置にあるセルの参照を返してくれます。
    隣接しない複数のセル範囲を指定した場合、領域を選択できます。

それぞれの書式の使用方法にについて、練習用ファイルを使用しながら具体的に見ていきましょう。

配列形式

INDEX関数を使用するほとんどの場合が、この配列形式ではないかと思います。
練習用ファイルの「INDEX関数_基本」シートを使用して、配列形式INDEX関数を一緒に組んでみましょう。

配列形式では、B列~D列の表を使用します。
この表の中からJ3セルで行番号、K3セルで列番号を指定し、L3列にその結果を表示させていきます。

ではL3セルにINDEX関数を入れていきます。
を入れたらINDEX関数を入れますが、最初の2文字くらい入れると一番上にINDEX関数が候補にあがってくるので、INDEX関数を選択した状態で Tab キーを押して使用する関数を確定します。

INDEX関数_配列形式
INDEX関数_配列形式

最初に第1引数を指定します。第1引数は配列ですが、この配列とは検索する範囲となります。
ここではB列~D列の表が対象なので、B3セル~D8セルを選択します。

INDEX関数_配列形式
INDEX関数_配列形式

第1引数を入力したら、カンマ , を打って第2引数を指定します。
第2引数は行番号で、第1引数で指定した配列の何行目を検索するか指定します。

直接数字を入力しても良いですが、その場合、行番号を変更したい場合は直接数式を編集する必要が出てくるので、練習用ファイルでは行番号を入力するセルを設けて、変更しやすい仕様にしています。
そのため、ここではJ3セルを選択または直接入力します。

INDEX関数_配列形式
INDEX関数_配列形式

第2引数を入力したらカンマ , を打って第3引数を指定します。
第3引数は列番号で、第1引数で指定した配列の何列目を検索するか指定します。
ここでも第2引数同様に、列番号を入力するセルを設けていますので、K3セルを選択または直接入力します。

INDEX関数_配列形式
INDEX関数_配列形式
INDEX関数の引数

第2引数までは必須の引数となり、第3引数以降は任意の引数となっています。
第3引数を省略した場合は、自動的に1列目となりますが、第1引数の配列で複数列を指定すると「#REFエラー」となりますので、第3引数を省略できるのは第1引数の配列で1列のみを選択した場合に限ります。

第3引数まで入力が終わったら Enter を押して完成です。

J3セルとK3セルにそれぞれ行番号と列番号を入力してみましょう。

INDEX関数_配列形式
INDEX関数_配列形式

第1引数で指定した配列の4行目と3列目が交差するセルの値として、L3セルには「キーボードW」が返ってきました。

=INDEX(検索範囲,行番号,列番号)
=INDEX(B3:D8,J3,K3)

セル範囲形式

次に「セル範囲形式」をやってみましょう。
このセル範囲形式は、検索したいセル範囲が、複数の離れた場所にある場合に使用します。
例えば、配列形式で使用したB列~D列の表と、F列~H列の表の両方を検索したいという場合に、このセル範囲形式を使用します。

実際に使用する機会はあまりないと思いますが、せっかくなので練習用ファイルの「INDEX関数_基本」シートを使用して、セル範囲形式INDEX関数を一緒に組んでみましょう。

まずL3セルに = INDEXを入れ Tab キーで使用関数を確定させます。

INDEX関数_セル範囲形式
INDEX関数_セル範囲形式

最初に第1引数を入力していきます。
第1引数は、配列形式同様に検索する範囲となりますが、配列形式と異なるのは、隣接しない場所にある複数の範囲を検索範囲として指定します。


この時、範囲は必ずカッコで囲むルールがあるのでまずカッコ ( を入力し、続けて最初の範囲を選択します。
ここではB3セル~D8セルを選択しましょう。選択し終えたらカンマ , を打って2つ目の範囲を選択します。
2つ目の範囲はF3セル~H8セルを選択し、最後にカッコ閉じ ) を入力します。

INDEX関数_セル範囲形式(最初の範囲選択)
INDEX関数_セル範囲形式(最初の範囲選択)
INDEX関数_セル範囲形式(2つ目の範囲選択)
INDEX関数_セル範囲形式(2つ目の範囲選択)

第1引数を指定したら、続けて第2引数に進みます。

第2引数配列形式と同じ行番号の指定となります。配列形式の時と同様にJ3セルに列番号を入力し、その値を参照したいと思いますので、ここではJ3と入力しましょう。

INDEX関数_セル範囲形式
INDEX関数_セル範囲形式

第2引数を指定したらカンマ , を打って第3引数に進みます。

第3引数配列形式と同じ列番号の指定となります。配列形式の時と同様にK3セルに列番号を入力し、その値を参照したいと思いますので、ここではK3と入力しましょう。

INDEX関数_セル範囲形式
INDEX関数_セル範囲形式

第3引数を指定したらカンマ , を打って、最後の第4引数に進みます。

第4引数は、領域番号となり、簡単に言うと第3引数で複数選択したセル範囲の何番目に選択した範囲を検索するかを指定します。配列形式にはなく、セル範囲形式のみの引数となります。

ここでは2番目に指定した範囲であるF3セル~H8セルを検索してもらう内容にしますので、第4引数2 と入力したら Enter を押して完成です。

配列形式の時と同じく4行目の3列目を指定してみましょう。
すると今度は2番目に指定した範囲から検索してくるので結果が異なりました。

INDEX関数_セル範囲形式
INDEX関数_セル範囲形式

配列形式と同じく、B3セル~D8セルの範囲から検索したい場合は、第4引数の領域番号を 1 としてあげれば、最初に選択した範囲から検索してきてくれます。
この領域番号も行番号・列番号同様に入力セルを設けてあげれば、セルを指定する対応が可能です。

INDEX関数_セル範囲形式
INDEX関数_セル範囲形式
=INDEX((1つ目の検索範囲,2つ目の検索範囲),行番号,列番号,領域番号)
=INDEX((B3:D8,F3:H8),J3,K3,2)

応用編

INDEX関数の基本の動きを理解したところで、応用編に行ってみましょう。
このINDEX関数は、どちらかというと単体で使用するよりも、他の関数と組み合わせて使用することの方が多いと思います。
使用例はいくつかありますが、ここでは使用頻度が高いと思われるものを2つご紹介したいと思います。

検索値から行番号や列番号を検索して抽出する

おそらく一番頻度が高いと思われる「INDEX関数MATCH関数を一緒に組む方法」をご紹介していきます。

MATCH関数は指定した範囲で検索したい値が、何行目・もしくは何列目に入っているか、それぞれ行番号・列番号で返してくれる関数です。

MATCH関数

指定した範囲内で検索したい値が入力されているセルの行番号や列番号で返してくれる関数

MATCH関数の詳細記事は準備中です。

VLOOKUP関数では対応できない検索値の左側の値を返したいという場合は、INDEX関数MATCH関数を一緒に組むことで検索値の左側の値を返すことが可能になります。

VLOOKUP関数では検索値は一番左側になければいけないルールがありますが、返してほしい値が検索値の左側にあるケースは結構あります。

お手持ちのエクセルバージョンが、Excel2021以降もしくはMicrosoft365であればXLOOKUP関数で対応可能ですが、それ以前のバージョンの場合や、前任者がExcel2019だったため、INDEX関数&MATCH関数で作成されていて、メンテナンスができないなど、まだ使用頻度は高いと思いますので、練習用ファイルの「INDEX関数&MATCH関数」シートを使用して実際に関数を作成しながら覚えていきましょう。

こちらのシートでは、A列に取引日、B列に商品番号、C列に商品名が入っています。
E列&F列に商品番号と商品名の一覧があるので、この中から商品名をKeyにして商品番号を返してほしいです。
単純にE列とF列の位置を変えれば良いのですが、他のデータとの連携上、変更できないケースも多々あります。こういうケースではINDEX関数MATCH関数を一緒に組んで、必要なデータを抽出します。

さっそくB2セルに関数を入れていきましょう。
まず最初にINDEX関数を入力するので、 = といれてINDEX関数を入力し Tab キーで使用関数を確定させます。

INDEX関数&MATCH関数
INDEX関数&MATCH関数

次にINDEX関数第1引数を入力しますが、ここでは返ってきてほしい値が入っている列(もしくは行)を選択します。

ここでは商品番号を検索したいので、E列を指定してカンマ , を打ちます。

E列の下の方に検索対象以外のデータが入っている場合は、列全体ではなくセル範囲を指定してくださいね。

INDEX関数&MATCH関数
INDEX関数&MATCH関数

INDEX関数の第1引数を指定したら、続けて第2引数を入力します。
この第2引数MATCH関数を入力します。MAくらいまで入力するとMATCH関数が候補に挙がってくるので、矢印キーでMATCH関数を選択したら Tab キーで使用関数を確定させます。

INDEX関数&MATCH関数
INDEX関数&MATCH関数

MATCH関数を選択して Tab キーを押したら、そのままMATCH関数第1引数を入力します。

MATCH関数第1引数は検査値で、検索したい値になります。今回は商品名をKeyにするので、C3セルを選択もしくは入力してカンマ , を押します。

INDEX関数&MATCH関数
INDEX関数&MATCH関数

MATCH関数の第1引数を指定したら、続けてMATCH関数第2引数に進みます。

MATCH関数第2引数は検査範囲で、第1引数で指定した値を検索する範囲となります。
今回はF列に入っている商品名から第1引数で指定した値を検索してほしいので、F列を選択してカンマ , を打ちます。

INDEX関数&MATCH関数
INDEX関数&MATCH関数

E列同様に、F列の下の方に検索対象以外のデータが入っている場合は、列全体ではなくセル範囲を指定してくださいね。

MATCH関数の第2引数を指定したら、続けてMATCH関数第3引数に進みます。

MATCH関数第3引数は照合の種類で、以上、完全一致、以下から選びますが、VLOOKUP関数の代用で使用する場合は基本的に完全一致でないと意味がないので、基本的には「0」となります。

INDEX関数&MATCH関数
INDEX関数&MATCH関数

MATCH関数の第3引数まで指定が終わったら、MATCH関数のカッコとINDEX関数のカッコの両方を閉じるので、カッコ ) を2つ続けて入力して Enter を押せば完成です。
正しい結果が反映されていることを確認できました。

あとはフィルハンドルをダブルクリックしてオートフィルで最終行まで関数を反映させてあげればOKです。

=INDEX(返してほしい値が入っている範囲,MATCH(検索値,検索範囲,完全一致))
=INDEX(E:E,MATCH(C3,F:F,0))

データが入っている最終行の行番号やセルの値を抽出する

ここではINDEX関数COUNTA関数を使用して、最終行や最終列に入っている値を抽出する方法をご紹介します。

COUNTA関数は指定した範囲内に、値が入力されているセル数を返してくれる関数となります。

COUNTA関数の詳細記事は準備中です

データ量が少ない時や、最終行の値の確認頻度が低い時などは最終行まで移動するショートカットキー Ctrl やや最終列まで移動するショートカットキー Ctrl で移動して、値をコピーや確認するでも良いですが、データ量が多い時や頻度が高い場合は面倒ですよね。

そういう時はINDEX関数COUNTA関数を一緒に組むことで、最終行や最終列に入力されている値を自動抽出する方法が便利です!

では練習用ファイル「INDEX関数&COUNTA関数」シートを使って実際に関数を入力してみましょう。

最終行の値を取得

B2セルにINDEX関数を入れていきます。
= INDEXと入れたら Tab キーで使用関数を確定させます。

INDEX関数&COUNTA関数
INDEX関数&COUNTA関数

使用する関数を確定させたら、INDEX関数第1引数を入力します。
この第1引数で返してほしい値を指定するので、ここでは商品名を返してほしいのでE列の商品名範囲を選択し、カンマ , を打ちます。

INDEX関数&COUNTA関数
INDEX関数&COUNTA関数

INDEX関数の第1引数を指定したら、続けて第2引数に進みます。

第2引数にはCOUNTA関数を入力します。このCOUNTA関数INDEX関数第2引数となります。
COUくらいまで入力すると候補が絞られるので、COUNTA関数を選択し Tab キーで使用する関数を確定させます。

INDEX関数&COUNTA関数
INDEX関数&COUNTA関数

COUNTA関数を使用関数と確定できたら、引数を指定します。
COUNTA関数引数は、値が入っているセルの数を数える行範囲や列範囲を指定するだけなので、ここではE列を選択します。

INDEX関数&COUNTA関数
INDEX関数&COUNTA関数

このデータが1行目から始まって、全ての行に値が入っていれば、このままINDEX関数のカッコを閉じて完了です。
最終行に入っている商品名が「キーボードM」であることが確認できました。

INDEX関数&COUNTA関数
INDEX関数&COUNTA関数
INDEX関数&COUNTA関数
INDEX関数&COUNTA関数

今回のように1行目からデータが始まっていれば良いですが、1行目が空白で2行目からデータが始まっているなど、本来カウントしたい範囲に空白がある場合は、COUNTA関数のカッコを閉じた後に空白分をプラスしてあげなければいけません。

INDEX関数&COUNTA関数
INDEX関数&COUNTA関数

1行目に空白行があるので、空白分を「+1」しています。
仮に空白が2つあれば「+2」、3つあれば「+3」と空白セルの分だけプラスします

=INDEX(返してほしい値が入っている範囲,COUNTA(空白以外のセル数を数える範囲))
=INDEX(E:E,COUNTA(E:E))
※空白セルが含まれる場合は、COUNTTA関数の後に+空白セル数とする
最終列の値を取得

B3セルにINDEX関数を入れていきます。
= INDEXと入れたら Tab キーで使用関数を確定させます。

INDEX関数&COUNTA関数
INDEX関数&COUNTA関数

使用する関数を確定させたら、INDEX関数第1引数を入力します。
この第1引数では、返してほしい値を指定するので、ここでは項目名を返してほしいのでの1行目を選択し、カンマ , を打ちます。

INDEX関数&COUNTA関数
INDEX関数&COUNTA関数

INDEX関数の第1引数を指定したら、続けて第2引数に進みます。

第2引数にはCOUNTA関数を入力します。このCOUNTA関数INDEX関数第2引数となります。
COUくらいまで入力すると候補が絞られるので、COUNTA関数を選択し Tab キーで使用する関数を確定させます。

INDEX関数&COUNTA関数
INDEX関数&COUNTA関数

COUNTA関数を使用関数と確定できたら、引数を指定します。
COUNTA関数引数は、値が入っているセルの数を数える行範囲や列範囲を指定するだけなので、ここでは1行目を選択します。

INDEX関数&COUNTA関数
INDEX関数&COUNTA関数

今回はデータがD列から始まっているため、3つの空白セルがあるので、COUNTA関数のカッコを閉じたら+3と入力し、INDEX関数のカッコを閉じて完成です。

INDEX関数&COUNTA関数
INDEX関数&COUNTA関数

最終列に入っている項目名が「商品属性20」であることが確認できました。

INDEX関数&COUNTA関数
INDEX関数&COUNTA関数
=INDEX(返してほしい値が入っている範囲,COUNTA(空白以外のセル数を数える範囲))
=INDEX(1:1,COUNTA(1:1))
※空白セルが含まれる場合は、COUNTTA関数の後に+空白セル数とする

まとめ

INDEX関数の基本的な動きと、他の関数と一緒に組む応用編を2つご紹介しました。

応用編に関しては、使用頻度の高そうなものをご紹介していますが、他の関数と組むことで他にも応用することが可能です。

ここでご紹介した使用例は、Excel2021以降のバージョンであれば、新しい関数で対応できるものもありますが、過去のファイルを新しい関数に変更するなどの際にも、元のINDEX関数と他の関数を一緒に組んだケースを理解しておくと作業がしやすいと思いますので、ぜひこの機会に覚えておいていただけたらと思います。

また、一番使用頻度が高いと思われるINDEX関数MATCH関数を一緒に組む方法は、動画でもご紹介していますので、良ければ動画でもご確認くださいね。

INDEX関数とMATCH関数を一緒に組む方法

励みになります!高評価とチャンネル登録よろしくおねがいいたします。

タイトルとURLをコピーしました