INDEX関数(インデックス),INDIRECT関数(インダイレクト)のご紹介です。

INDEX関数

INDEX関数は、指定された行と列が交差する位置にあるセルまたはセルの参照を返してくれる関数になります。
書式は、2つあります。=INDEX(配列, 行番号, [列番号])、=INDEX(参照, 行番号, [列番号], [領域番号])です。
1つ目:=INDEX(配列, 行番号, [列番号])は
「配列」 :この引数は必須です。セル範囲または配列定数を指定します。
「行番号」:この引数は必須です。ただし第1引数「配列」が1行のときは省略可能です。
      配列内の行の位置を数値で指定します。「0」を指定した場合、行全体を返します。
「列番号」:この引数は任意です。ただし第2引数「行番号」が省略されているときは必須です。
      配列内の列の位置を数値で指定します。「0」を指定した場合、列全体を返します。
2つ目:=INDEX(参照, 行番号, [列番号], [領域番号])
「参照」  :この引数は必須です。1つまたは複数のセル参照を指定します。
       隣接していない複数の範囲を指定する場合、「()」(括弧)で囲って「,」(カンマ)で区切ります。
「行番号」 :この引数は必須です。
       範囲内の行の位置を数値で指定します。「0」を指定した場合、行全体を返します。
「列番号」 :この引数は任意です。
       範囲内の列の位置を数値で指定します。「0」を指定した場合、列全体を返します。
「領域番号」:この引数は任意です。省略すると第1引数「参照」で指定した範囲のうち1番目の範囲を使用します。
       第1引数「参照」で隣接していない複数の範囲を指定した場合、どの範囲を使用するか数値で指定します。

1つ目の=INDEX(配列, 行番号, [列番号])で見ていきましょう。
下の表で「E3」に一行目を返してみます。「E4」には3列目を返してみましょう。

「E3」には、=INDEX(A2:C2,1)と入力します。結果は「1」

次に「E4」には、=INDEX(A2:C2,3)と入力します。結果は「営業」

今度は先程の表で「E3」に表全体から2行目、3列目を返してみましょう。結果は「営業」

では今度は行列番号をセルで指定していきましょう。「G6」は1行目の2列目、「G7」は3行目の3列目と言うようにセルを参照します。
結果は、「G6」は名前、「G7」は営業が返ります。

2つ目の=INDEX(参照, 行番号, [列番号], [領域番号])で見ていきます。
複数の範囲のどの範囲の何行目、何列目のデータを取得するかを指定します。
「E2」には2つの範囲の中から2行目の3列目を返してみましょう。「F2」には対象範囲の2のなかから2行目の3列目を返します。
「E2」には=INDEX((A2:C4,A6:C8),2,3,1)と入力します。「F2」には=INDEX((A2:C4,A6:C8),2,3,2)と入力してください。

結果は「E2」には営業、「F2」には生産が返りました。
このように、2通りのINDEX関数があります。

INDIRECT関数

INDIRECT関数を使うと、参照したいセル番地やセルの範囲を文字列として指定できるんです。
なかなか使いこなしが難しいINDIRECT関数ですが、機能を単純に説明しますと、
「参照文字列」に「A1」など、セル番地を「文字列」で指定すると、そのセルの値を表示してくれます。

例1:例えば下図でB1セルにE3セルの値(\1200)を表示したい場合は、「=INDIRECT(”E3″)」と記述すれば、B1セルに「\1200」と表示されます。
文字列を「参照文字列」に直接指定する場合は、「”」(ダブルクォーテーション)で囲んで指定します。
「参照形式」は通常、A1形式を使うんですが、省略してもよい場合が殆どです。

INDIRECT関数がなぜ便利なのか分からない人も多いのですが。そもそもE3の値を表示したいならB1セルに「=E3」と記載すれば済みます。
では、なぜINDIRECT関数を使うのでしょうか? 
代表的な活用例としては、「別シートのデータを1つに集約する」「複数の表から特定の値を取り出す」の2つが多いですね。
「仕事での使い方」でこの2つを詳しく紹介しながら、INDIRECT関数のメリットを実感してほしいと思います。
別シートのデータを1つに集約することができます。
各支店別に入場者数をまとめた3枚のシートがあります。
この中にある入場者数の合計を、「3店合計」シートにまとめたい。INDIRECT関数なら簡単にできるんですね。下図を見てください!

「3店合計」シートの「B3」に、=INDIRECT(B2&”!B6″)と入力します!結果3店舗の合計が返されます。


例2:他の関数と併用すると便利な、Excelの関数「INDIRECT」の使い方!便利な応用です。
下図のように中間テストの結果と期末テストの結果のデータがあります。
期末の伊藤さんだけの点数を取り出してみます。VLOOKUP関数と併用して使ってみましょう。
「B3」に、=VLOOKUP(B2,INDIRECT(B1),2,FALSE)と入力しましょう。

結果は「#REF!」エラーになっちゃいました!!
そこで、中間と期末のデータに名前の定義をします。


「A7:B12」を範囲選択し、名前ボックスに「中間」と名前の定義をします。
同様に「B7:E12」には「期末」と定義します。そうすることで「B3」には「81」と点数が返ってくれます。
もっと便利に使うには、「B1」のセルには入力規則をリストで入れます。「中間、期末」で設定します。
次に「B2」のセルにも入力規則をリストで選択し、「A7:A12」で設定すると、中間か期末が選べて更に名前も選べるようになります。

入力規則 挿入

INDEX関数、INDIRECT関数のまとめ

ExcelのINDEX関数もINDIRECT関数ですが他の関数との組み合わせ方手使うととても便利な関数です。
INDEX+MACH関数や、INDIRECT+VLOOKUP関数などと併用して利用すると簡単に導き出したいデータが得られます。
使い方をマスターすればExcelがこれまでよりももっと便利になるので、是非身に付けてくださいね!
これからも引き続き関数動画・ブログをアップして参りますので、気になる関数があったらまずはソフトキャンパスの動画を確認してみてください!