INDEX関数の使い方|指定した行と列の交差セルを返す

ExcelのINDEX関数の使い方

ExcelのINDEX関数の使い方|指定した行と列の交差セルを返す

使用関数:INDEX、MATCH、ROW、COLUMN

INDEX(インデックス)関数とは?

Excelの関数の中でもINDEXは使用頻度の高い関数の一つです。特にMATCH関数・INDIRECT関数・ROW関数など他の関数と組み合わせることで格段に汎用性が高まります。
INDEX関数は範囲検索でVLOOKUP関数が使えない時の救世主的存在です。検索値の位置を左端列に限定するというような縛りがなく、クロス集計表のように2方向からデータを検索できます。

INDEXと似た働きをする関数にOFFSET関数があります。両者の違いは、INDEXが行・列番号の交差セルの内容を求めるのに対して、OFFSETは参照位置から指定した距離だけ行・列方向にあるセルの内容を求めます。

INDEX関数の引数と書式

「数式」→「関数ライブラリ」→「検索/行列」からINDEXを選択すると、
数式ライブラリの検索/行列からINDEXを選択
2つの選択肢から引数の形式を選ぶボックスが現れます。
引数の選択ダイアログ1
デフォルトの選択肢「配列、行番号、列番号」は「配列形式
INDEX関数の配列形式の構成
もう一つの「参照、行番号、列番号、領域番号」の方は「セル参照形式といいます。
INDEX関数のセル参照形式の構成

INDEX関数の使い方

INDEX関数の「配列形式」と「セル参照形式」それぞれの使用例を挙げて、できるだけ分かりやすく解説していきます。

配列形式

「引数の選択」で配列形式を選択し、ダイアログを開きます。
詳細は後述しますが、「行番号」「列番号」のどちらかの引数を省略する使い方もあり、とてもコンパクトな構成です。
INDEX関数の配列形式の引数

第一引数「配列」にセルの範囲を指定

最初の引数「配列」では検索する対象の範囲を指定します。
この例ではセル範囲をドラッグで入力しました。
INDEX関数の「配列形式」で第一引数「配列」にセル範囲を入れる
「配列」には別シートに置いた表やテーブルを範囲にすることもできます。名前を定義してあれば、その名前を「配列」に入力します。

第二引数「行番号」を指定

この例ではセル参照で「行番号」を入れました。
INDEX関数の行番号を指定

第三引数「列番号」を指定

この例ではセル参照で「列番号」を入れました。
INDEX関数の列番号を指定
行番号と列番号が交差するセルの値が返されました。
INDEX関数の「配列形式」で行番号と列番号が交差するセルの値

INDEX関数の「配列形式」で「行番号」を省略する

INDEX関数の「配列形式」では引数の「行番号」「列番号」のどちらかを省略することもできます。「行番号」と「列番号」の、どちらか一方に「」を入力するか、省略(空白)すると、指定された行(または列)に属する全データ範囲を取得できます。
簡単な使用例として、以下の表から3列目のデータを転記してみます。「行番号」を省略し、「列番号」に「3」を入力します。
INDEX関数の「配列形式」で「行番号」「列番号」の一方を省略する使用例
3つ目の列の全データを取得できました。
3列目の全データを取得

INDEX関数で「列番号」を省略するとエラーになる?

列番号の省略には注意が必要です。INDEX関数の引数ダイアログで列番号を省略して空欄にするとエラー(#REF!)になります。
これは行番号の後に入るべきカンマが入らないためで、引数の不備で数式が無効と判定されます。ダイアログで列番号を省略する時は「0」を入力しましょう。
INDEX関数の引数ダイアログで列番号を省略する時は「0」を入れる
数式を手入力する時はカンマを忘れずに入れましょう。「=INDEX(配列,行番号,)」

セル参照形式

「引数の選択」でセル参照形式を選択します。
「引数の選択」でセル参照形式を選択

第一引数「参照」には複数のセル範囲を指定できる

「参照」に複数の範囲指定をする時は、それぞれの範囲をカンマ「,」で区切り、全体を括弧「()」でくくります。
INDEX関数「セル参照形式」の「参照」に複数の範囲を指定
別シートの複数の範囲を指定する時は予め範囲に名前を定義しておくとスムーズです。

第二引数「行番号」第三引数「列番号」

この二つは「配列形式」と同じです。数値やセル参照で交差させる位置を指定します。どちらかを省略することもできます。エラーの対処法も同じです。
INDEX関数「セル参照形式」の第二引数「行番号」第三引数「列番号」の指定

第四引数「領域番号」

第一引数「参照」に複数の範囲を指定した場合、どの範囲から値を取り出すかを番号で指定します。一番左端に入力した範囲から「1・2・3・・」と番号が振られます。
INDEX関数「セル参照形式」の第四引数「領域番号」
この引数は省略できます。省略した場合は領域番号「1」が選択されます。

INDEX関数の「セル参照形式」で取得された結果です。
INDEX関数の「セル参照形式」で値を取得

INDEX関数の応用

INDEX関数はMATCH関数など他の関数と組み合わせることでいろいろに応用が効きます。

INDEX関数とMATCH関数を組み合わせて複数条件で値を抽出する使用例

INDEX関数とMATCH関数は相性がよく、様々なシーンで使われます。
この使用例では「輸送先」と「荷の個数」という複数の条件から送料を求めます。INDEX関数の引数にMATCH関数を入れ子して実装します。
INDEX関数とMATCH関数で複数の条件から値を求める使用例
送料を求めるセルを選択して、INDEX関数「配列形式」の引数ダイアログを開き、第一引数「配列」に送料と個数の表データをドラッグで入力します。
INDEX関数「配列形式」の第一引数「配列」に送料と個数の表データをドラッグで入力

INDEX関数の第二引数「行番号」にMATCH関数をネスト

INDEX関数の行番号をMATCH関数で指定します。荷の個数の入ったセルを「検査値」に、データ表の「個数」のデータ範囲を「検査範囲」に、「照合の種類」を検査値よりも大きい近似値を返す「-1」にします。
INDEX関数の行番号をMATCH関数で指定

INDEX関数の第三引数「列番号」にMATCH関数をネスト

INDEX関数の列番号をMATCH関数で指定します。輸送先の入ったセルを「検査値」に、データ表の「見出し」の範囲を「検査範囲」に、「照合の種類」を検査値と完全一致の「0」にします。
INDEX関数の列番号をMATCH関数で指定

数式は「=INDEX(A2:F6,MATCH(C8,F2:F6,-1),MATCH(A8,A1:F1,0))」となります。

INDEX関数とMATCH関数を組み合わせて複数条件で送料を取得できました。
INDEX関数とMATCH関数を組み合わせて複数条件で送料を取得

INDEX関数とROW関数・COLUMN関数を組み合わせて表を分割する使用例

名前の列から番号順に3組に分けて表示させます。一つの列範囲を3列4行の表に分割するということです。
INDEX関数とROW関数・COLUMN関数を組み合わせて一つの列範囲を3列4行の表に分割
第一引数「配列」には「名前」のセル範囲をドラッグで入力します。
INDEX関数の第一引数「配列」には「名前」のセル範囲をドラッグで入力
第二引数の「行番号」にはROW関数でシートの行番号を取得します。「A1」と入力して返るのは「1」です。最初の名前の番号「1」を指定したいわけですが、行方向へのコピーは「1、4、7、10」となることを考慮して「*3」を付け加えます。そのままでは「3」になるため、「A1」から1を引いて「0」に補正します。ここに1を足せば名前の最初の値が返されますが、列方向へのコピーが「1、2、3」となるようにCOLUMN関数で列番号「1」を取得して+でつなぎます。最終的に引数「行番号」には「(ROW(A1)-1)*3+COLUMN(A1)」と入ります。
INDEX関数の第二引数「行番号」にROW関数・COLUMN関数を組み合わせて入力

数式は「=INDEX($B$2:$B$13,(ROW(A1)-1)*3+COLUMN(A1))」となります。

INDEX関数とROW関数・COLUMN関数を組み合わせて列範囲を分割できました。
INDEX関数とROW関数・COLUMN関数を組み合わせて列範囲を分割した結果

まとめ
  • INDEX関数は指定した行と列の交差位置を求めます。
  • INDEX関数のダイアログでは「配列形式」と「セル参照形式」を選択して数式を組み立てます。
  • 「行番号」と「列番号」の内、どちらかを省略することができます。その場合、空白のままにするか、「0」を入力します。この場合、行か列の全データ範囲が返されます。
  • 「列番号」の省略で数式にカンマを入れ忘れるとエラーになるので注意しましょう。ダイアログで設定するなら省略は「0」を使いましょう。
  • 「セル参照形式」は複数の範囲を参照できます。
  • INDEX関数とMATCH関数は使用例が多い組み合わせです。INDEX関数の応用は他にもINDIRECT関数・ROW関数・COLUMN関数などと組み合わせる使い方があり、使用頻度の高い関数と言えます。
タイトルとURLをコピーしました