INDEX関数:領域内の行番号と列番号が示すセルの参照を取得する
INDEX 関数は Excel で用意されている関数の一つで、領域内の指定した行番号と列番号が示すセルへの参照を取得します。また同じ関数名で配列定数内の指定した行番号と列番号が示す値を取得することもできます。ここでは Excel における INDEX 関数の使い方について解説します。
※ Excel の対応バージョン : 365 web 2021 2019 2016 2013 2010 2007
(Last modified: )
目次
INDEX関数の定義
INDEX
関数の一つ目の利用方法は、領域内の指定した行番号と列番号が示すセルの参照を取得します。
1 番目の引数に対象の領域となるセル範囲を指定します。複数のセル範囲を指定することができます。 2 番目の引数に行番号を指定します。領域の先頭の行の行番号が 1 となります。 3 番目の引数に列番号を指定します。領域の先頭の列の列番号が 1 となります。 INDEX
関数は行番号と列番号で指定されたセルへの参照を返します。
下記では領域として C3:G6 、行番号として 3 、列番号として 2 を指定しています。結果として D5 セルへの参照が返されます。
=INDEX(C3:G6,3,2)
複数の領域を対象にする
INDEX
関数では複数の領域を指定することができます。複数の領域を指定する場合は、 1 番目の引数に (セル範囲1,セル範囲2,...) のようにセル範囲をカンマで区切って記述し、全体を ( と ) で括って指定します。そして 4 番目の引数でどの領域を対象にするのかを指定します。最初の領域の領域番号が 1 、次の領域の領域番号が 2 となっています。
下記では領域として C3:G6 と C10:G13、行番号として 2 、列番号として 3 を指定しています。結果として E11 セルへの参照が返されます。
=INDEX((C3:G6,C10:G13),2,3,1)
なお領域番号を省略した場合は 1 が指定されたものとして扱われます。
配列の中の行と列が示すセルの値を取得する
INDEX
関数の二つ目の利用方法は、配列定数内の指定した行と列が示すセルの値を取得します。セル参照ではなく値を返す点に注意してください。
1 番目の引数に対象の範囲を配列定数を使って指定します。 2 番目の引数に行番号を指定します。領域の先頭の行の行番号が 1 となります。 3 番目の引数に列番号を指定します。領域の先頭の列の列番号が 1 となります。 INDEX
関数は行番号と列番号で指定されたセルに入力されている値を返します。
※ 配列定数については「配列定数の利用方法」を参照されてください。
例えば対象の範囲として {30,18,54:28,45,32} 、行番号が 1 、列番号が 3 だった場合、取得する値は 54 となります。
=INDEX({30,18,54;28,45,32},1,3) --> 54
行番号に 0 を指定するか省略した場合、指定した列全体を配列として返します。列番号に 0 を指定するか省略した場合、指定した行全体を配列として返します。行番号および列番号の両方に 0 を指定するか省略した場合、配列全体を配列として返します。
下記では対象の範囲として {30,18,54:28,45,32} 、行番号が 1 、列番号を省略した場合です。この場合、複数のセルの値が返されるので、配列変数として入力する必要があります。まず結果を表示するセル範囲を選択した選択した上で、数式バーに次のように入力してください。
=INDEX({30,18,54;28,45,32},1)
入力が終わったら Ctrl
+Shift
+Enter
キーを押してください。あらかじめ選択していたセル範囲に INDEX
関数が返す複数の値がそれぞれ表示されます。
※ 配列数式については「配列数式の利用方法」を参照されてください。
なお Microsoft 365 の環境であれば、戻り値を表示するセルに対して直接 =INDEX({30,18,54;28,45,32},1)
を入力し、 Enter
キーを押すだけで構いません。
INDEX関数の使い方
それでは実際に INDEX
関数を使ってみます。 Excel のシートに対象の数値を次のように入力しました。
取得した値を表示する C17 セルを選択し、次のように入力しました。 1 番目の引数に対象の領域として (C3:G6,C9:G12) 、 2 番目の引数に行番号が入力されている C15 セル、 3 番目の引数に列番号が入力されている C16 セル、 4 番目の引数に領域番号が入力されている C14 セルを指定しました。
=INDEX((C3:G6,C9:G12),C15,C16,C14)
Enter
キーを押すと、 C17 セルには次のように表示されます。デフォルトで入力した領域番号 1 、行番号 1 、列番号 1 が示す C3 セルの値を取得し表示しました。
それでは領域番号として 2 、行番号として 3 、 列番号として 2 を入力したあとで Enter
キーを押すと、 C17 セルには D11 セルの値を取得し表示します。
INDEX関数とMATCH関数を組み合わせてVLOOKUP関数に似た使い方をする
INDEX
関数と MATCH
関数を組み合わせることで、指定した文字列と一致する行を取得し、その行にある任意の列のデータを取得できます。次のシートを見てください。
氏名を入力すると住所を表示するようにします。結果を表示する C11 セルに次のような数式を入力しました。
=IFERROR(INDEX(D2:D8,MATCH(C10,C2:C8,0),1),"--")
MATCH
関数を使って C10 セルに入力された値をセル範囲 C2:C8 で検索してインデックスを取得します。そして INDEX
関数を使ってセル範囲 D2:D8 から行番号に先ほど MATCH
関数を使って取得したインデックス、列番号に 1 を指定して値を取得しています。 IFERROR
関数は MATCH
関数で値が検索できなかったときにエラーの代わりに "--" を表示するために使用しています。
C10 セルに検索する名前を入力すると、住所を C11 セルに表示します。
INDEX
関数と MATCH
関数を組み合わせることで VLOOKUP
関数と似た処理を行うことができました。
INDEX関数の便利な利用方法
INDEX
関数の便利な利用方法を下記の記事で紹介しています。
・複数のセルの中で文字数が一番多い値を取得する(LEN,MAX,INDEX,MATCH)
・重量とサイズの組み合わせから送料を取得する(INDEX,MATCH)
・誕生日から星座を取得する(INDEX,MATCH,MONTH,DAY)
-- --
Excel における INDEX 関数の使い方について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。