INDEX分類:検索/行列 2009.02.06
INDEX関数は「検索/行列」に分類される関数で、行番号と列番号で指定されるテーブル、または配列 の要素の値を返します。MATCH関数と組み合わせると、応用の幅が非常に広がります。
「氏名と教科名からその人物の成績を抽出する」といった用途が考えられます。
INDEXの機能と構成
機能:行番号と列番号で指定されるテーブル、または配列の要素の値を返す。
構成:=INDEX(配列,行番号,列番号)
引数
配列は、セル範囲または配列定数を指定します。
行番号は配列の中で、値を返す行を数値で指定します。行番号を省略した場合は、必ず列番号を指定する必要があります。
列番号は配列の中で、値を返す列を数値で指定します。列番号を省略した場合は、必ず行番号を指定する必要があります。
行番号と列番号の両方が使用されている場合は、行番号と列番号が交差する位置にあるセルの値が返されます。行番号、列番号の両方、又はどちらかが配列の範囲外を指定すると#REF!のエラーになります。
行番号または列番号を 0 に設定すると、それぞれ列全体または行全体の値の配列が返されます。
配列として返される値を利用するには、INDEX 関数を配列数式として横方向のセル範囲に入力するか、縦方向のセル範囲に入力します。配列数式を入力するときは、Ctrl キーと Shift キーを押しながら Enter キーを押します。
引数を指定する例
セル範囲[B2:F9]から2行・3列目の値を取り出す。
=INDEX(B2:F9,2,3)
配列定数の中から2行・2列目の値を取り出す
=INDEX({1,2;3,4},2,2)
セル範囲[B2:F9]に[DataArea]と名前の定義を行い、その範囲の5行・3列目の値を取り出す。
=INDEX(DataArea,5,3)
名簿を利用したINDEX関数の使用例
●セル範囲[B2:F9]から5行・4列目の値を取り出す
●行に「0」を指定した配列数式として使用例
INDEX関数の応用
MATCH関数との組み合わせ
INDEX関数はその特性からMATCH関数と相性が良く、組み合わせて使用することが多いです。この組み合わせは、検索関数の組み合わせで、最も応用が聞くため、私も多用します。ここではその代表的な使用法を例に挙げます。(注意:分かりやすいように色をつけました。)
●行・列の値をMATCH関数で検索し、その結果を基にINDEX関数で指定したセル範囲から値を取り出します。
参照範囲として利用する
INDEX関数の行、または列に「0」を指定すると、行、または列全体のセル範囲参照が返ります。
その特性を利用して、SUM関数やAVERAGE関数と組み合わせると、表の指定の列や行の、合計や平均を動的に取得できます。
下図は、範囲内の列全体の合計を取得しています。列は教科名により動的に変わります。