INDEX関数は、「指定した範囲(表)の、行番号と列番号の位置にある値を抽出する」関数です。
基本的な構文と使い方はこちら。
行の番号と列の番号を指定する、といったシンプルな関数ですね。
他の関数と組み合わせたりはしますが、この使い方が多いでしょう。
今回の例では「領域番号」を省略しています。
領域番号については下の領域番号を指定する使い方で説明しています。
じつはINDEX関数、範囲を複数指定することができます。
複数の範囲?なんじゃそらって感じですよね。
そして基本的なものとは別に、構文がもう1つあります。
「配列」を使うという、一見変わった使い方ができるんです。
そして「配列(範囲)を返す」という使い方も。
文字だけだとわかりづらいですが、後の項目でイメージといっしょにまとめているのでご安心ください。
⇒【応用編1】INDEX関数で配列を出力する方法
⇒【応用編2】INDEX関数の構文と使い方2 配列を指定する方法
「実はこんなこともできちゃうよ」と、なにげに奥が深い関数でもあります。
まずは基本的な使い方から、ちょっと難しい使い方まで紹介します。
Contents
INDEX関数の基本的な使い方 範囲指定(参照指定)する方法
基本的な使い方は冒頭で述べたとおりなのですが、構文のなかでわかりづらいのが「領域番号」。
INDEX関数は、複数の範囲を指定して、どれを使用するか選ぶことができるんです。
領域番号を指定する使い方
この例では、INDEX関数で範囲を2つ指定しています。
そして2つめ(右側)の範囲から値を抽出しています。
「領域番号」は、指定した範囲のなかから、何番目のものを使用するか、というものだったんですね。
省略した場合は、領域番号が1とみなされます。
範囲が1行なら行番号を省略可能
指定した範囲が1行の場合には、行番号を省略することができます。
1行しかないのだから1行目から出力するに決まっている!ということですね。
領域番号は省略しています。
範囲が1列なら列番号を省略可能
指定した範囲が1列の場合には、列番号を省略することができます。
こちらも1列しかないのだから出力はその列だ!ということですね。
領域番号は省略しています。
この例では、範囲と行しか指定していません。
列も領域番号も省略可能なため、こういった書き方もできるんですね。
ちなみに行や列、領域番号の順番を入れ替えて書くことはできません。
INDEX関数 演習問題1
こちらの表を用いて、以下のINDEX関数を入力した場合、どの値が抽出されるでしょうか
- =INDEX(A3:B7,3,1)
- =INDEX((A3:B7,D3:E7),2,2,2)
- =INDEX((A3:B7,D3:E7),5,2)
INDEX関数 演習問題1 解答
- S000003
範囲指定:表1
3行目、1列目 - 菊池 恵子
範囲指定:表1と表2
2行目,2列目
領域番号:2 - 小川 健
範囲指定:表1と表2
5行目、2列目
領域番号を省略(1番目の表1が指定される)
【応用編1】INDEX関数で配列を出力する方法
ここからは応用編です。
INDEX関数は、行番号や列番号に「0」を指定することで、配列を出力することができます。
たとえば行番号に0を入力すると、指定した列のすべての行データを出力します。
列番号に0を入力すると、指定した行のすべての列データを出力します。
それを別の関数にさらに入力することもできます。
配列とは、「いくつかの値をひとまとめにしたもの」のことです。
どういうこっちゃ?と思うかもしれません。
例を見てみましょう。
この例では、行の指定を「0」にしています。
すると、「すべての行を配列にして出力」します。
内部では、[100, 80, 70, 150, 120]の5つの値をひとまとめにして出力しています。
そこで、その値をSUM関数の入力に使っています。
結果は520となっていますが、これは 100 + 80 + 70 + 150 + 120 = 520 となるためです。
【応用編2】INDEX関数の構文と使い方2 配列を指定する方法
INDEX関数のもうひとつの構文がこちらです。
ひとつめの入力値が「範囲」ではなく「配列」となっています。
さらに「領域番号」の指定がなくなりました。
使用例を見てみましょう。
今回のポイントは、{2,3,4; 5,6,7; 8,9,10}の部分です。
{}で数値を囲むことによって、配列をつくることができます。
「,」区切りで列を、「;」区切りで行を生成します。
緑の点線で囲まれた部分は、つくった配列のイメージです。
お手元にExcelがある場合、ぜひこのINDEX文をどこかのセルに入力してみてください。
表などを用意せずとも、「9」と出力されるはずです。
正直とてもイメージしづらく、なかなか使いどころは限られると思います。
「こんなこともできるんだな~」程度で大丈夫です。
INDEX関数 演習問題2
以下の式を入力したとき、答えの数字はいくつになるでしょうか。
=SUM(INDEX({2,3,4;5,6,7}, 2, 0))
今回の問題は、配列を入力と出力、いずれにも使っています。
頭がこんがらがるかもしれませんが、じっくり考えてみてください。
INDEX関数 演習問題2 解答
解答は18となります。
内側のINDEX関数では、列番号を「0」としています。
そのため2行目の全列、{5, 6, 7}のデータがSUM関数に入力されます。
よって 5 + 6 + 7 = 18 となるわけですね。
MATCH関数と組み合わせてより便利に!
今回、INDEX関数単独での使い方を紹介しました。
じつはINDEX関数は、MATCH関数と組み合わせることで、表の中から任意の値を抽出するときとても便利なんです。
こちらの記事でまとめていますので、ぜひ読んでみてください。