YSC で行われている「情報OA基礎科」のアシスタントに行っているが、今日は Index関数、Match関数を立て続けに質問され、ついに恐怖症に陥った。
帰宅し、恐怖が薄らいだ時点で Excel2003 のヘルプを読んだ。
INDEX 書式 1
行番号と列番号で指定されるテーブルまたは配列の要素の値を返します。
INDEX 関数には、セル範囲形式と配列形式の 2 種類があります。セル範囲形式の INDEX 関数は指定されたセルの参照を返し、配列形式の INDEX 関数は値または値の配列を返します。INDEX 関数の 1 番目の引数が配列定数のときは、配列形式を使います。書式 1
配列形式
INDEX(配列,行番号,列番号 )
- 配列
セル範囲または配列定数を指定します。
- 配列が 1 行または 1 列のみの場合、それぞれ行番号または列番号を省略することができます。
- 配列が複数行および複数列で構成され、行番号または列番号のどちらか一方しか指定されていない場合、配列の中にある行または列全体の配列が返されます。
- 行番号
配列の中にあり、値を返す行を数値で指定します。行番号を省略した場合は、必ず列番号を指定する必要があります。- 列番号
配列の中にあり、値を返す列を数値で指定します。列番号を省略した場合は、必ず行番号を指定する必要があります。解説
- 行番号と列番号の両方が使用されている場合は、行番号と列番号が交差する位置にあるセルの値が返されます。
- 行番号または列番号に 0 を指定すると、それぞれ列全体または行全体の値の配列が返されます。配列として返される値を利用するには、INDEX 関数を配列数式として横方向のセル範囲に入力するか、縦方向のセル範囲に入力します。配列数式を入力するときは、Ctrl + Shift + Enter キーを押します。
- 行番号と列番号には、配列内のセルを指定します。配列の範囲外のセルを指定すると、エラー値 #REF! が返されます。
練習問題
- セルC3に、B3の数値を基に出発地を求めなさい。(列の縦を出発地とする)
- 考察
- VLookupは‥‥ 使えない。なぜならば、検索するキーが“1”だからだ。
- 何となく、Index を使わないとだめだ‥‥ と言うことが解らないと、この問題は解けない。
- 例えば、子どもと大人の出発地が‥‥ 今回は同じであるが、違う可能性もある...
- 解答
- 一般的には、=INDEX(B10:B14,B3,1) であろう。
- 子どもと大人で出発地が違うのであれば、=INDEX((B10:B14,I10:I14),B3,1,I3) となる。この方が正解であろう。
( ) が無いとエラーになる。
- 考察
- セルF3に、E3の数値を基に到着地を求めなさい。(横の行を到着地とする)
- 考察
- 設問1と考え方は同じ。
- 解答
- 上記理由で大正解は、=INDEX((C9:G9,J9:N9),1,E3,I3)であろう。
- 考察
- セルJ3に、I3の数値を基に区分を求めなさい。
- 考察
- これは VLookup で出来る。
- 解答
- =VLOOKUP(I3,B18:C19,2,0)
- 考察
- セルB6に、出発・到着・区分のデータに合致する料金を求めなさい。
- 考察
- 「区分」が“2”なので、子どもの料金。
- 出発が行の「駅前」、到着が列の「平和通」なので、答えは 150円であろう...
- 解答
- =INDEX((C10:G14,J10:N14),B3,E3,I3)
- 領域が複数ある場合、( )で括らないとエラーになる。
- =INDEX((C10:G14,J10:N14),B3,E3,I3)
- 考察