INDEX関数

INDEX 関数はテーブルまたはセル範囲にある値、あるいはその値のセル参照を返します。

セル範囲の中で何行何列目かを指定するとその値を返してくれます。マイクロソフトさんのエクセル関数の説明は毎度難しいですね。正確に記述するためには仕方ないのでしょうけれど。

下のような表で吉田さんの理科の得点を取得したい場合、点数の部分をセル範囲とすると(セルB2からセルE7)2行目の3列目が吉田さんの理科の点数になりますね。INDEX関数を使えばセル範囲と何行何列目が分かればセルの値が取得できます。

INDEX関数
行番号と列番号で指定されるテーブルまたは配列の要素の値を返します。
INDEX(配列, 行番号, [列番号])
INDEX(参照, 行番号, [列番号], [領域番号])

同じ関数なのに2通りの書き方があります。ちょっとややこしいですね。上図の様に関数の挿入でINDEX関数を選択しても更にどちらかを選択するよう求められます。しかし、一応のところ同じものだと思ってもらっていいかと思います。2つの定義で違うところは、最初の引数の配列と参照ですね。あとは領域の第4引数を取るかとらないかです。

第1引数の参照はセル範囲のことですね。上図ならセルB2:セルE7になります。このデータを引っ張り出したい表が1つの場合は引数の少ない方の INDEX(配列, 行番号, [列番号]) を選択しておけばよいでしょう。ふつうはこちらですね。

吉田さんの理科の点数をINDEX関数で求める際の第1引数としてセルB2からセルE7を選択します。第2引数は選択したセル範囲の2行目にあたるので2とします。第3引数は3列目になるので3とします。

=INDEX(B2:E7,2,3)

では、配列とは何のことでしょう。突き詰めると私も自信がありませんが、セル範囲以外に配列定数 が取れるということでしょう。エクセルの表にないデータを直接数式に入れられるということです。

上の例で行けば各自の成績を直接配列定数としてINDEX関数の中に入れます。

=INDEX({88,78,79,86;85,81,85,95;69,73,86,82;74,55,72,69;58,93,82,87;91,100,94,49},2,3)

B2:E7 が生のデータになっています。ここの部分が配列定数です。

INDEX関数は2つ種類があり、基本的に同じものだと理解しているのですが、4つ目の引数の領域のご説明がまだですね。これは、第1引数を複数指定した場合、その複数のどれですかということです。

=INDEX((B3:E8,B12:E17),2,3,2)

第1引数を小かっこで括ってセル範囲とセル範囲をカンマで区切ります。上図の場合は中間試験結果であるセルB3からセルE8までを領域1とします。期末試験結果であるセルB12からセルE17までを領域2とします。(B3:E8,B12:E17)が第1引数となります。第2引数はどちらの領域化は別として領域の2行目、第3引数は領域の3列目となります。第4引数が1の場合は領域1の方なので セルB3からセルE8まで の2行3列目の85ですが上の式の第4引数は2となっています。なので第2領域の セルB12からセルE17の2行3列の65となります。

第4引数を取る INDEX(参照, 行番号, [列番号], [領域番号]) の方は第1引数には複数の領域を設定できますが、配列定数を使い場合には複数の領域は設定できません。

コメントを残す

メールアドレスが公開されることはありません。