2024/1/16:INDEX関数
≪毎週木曜12:15~ZOOMで開催中!Excel関数お勉強会の内容です。》
※【2025/1/18】一部補足などの追記を行いました。
◇関数のざっくり紹介
特定の配列や範囲などの位置(行・列)を特定して、データを見つけます。
■INDEX関数
▽配列形式での書き方(というか基本的な使い方)
=INDEX(配列, 行番号, [列番号])
公式説明に「INDEX 関数の 1 番目の引数が配列定数のときは、配列形式を使います。」とありますが、配列定数に限らず配列はすべて同様です。
このちょっとわかりづらい公式説明文が、何を言いたいかというと、次項で説明する「領域番号」での切り替えなどを使いたくても、第1引数が配列の場合は無理だよ!という事かと思います(´・ω・`)
▽セル範囲形式での書き方(むしろ領域番号の説明メイン)
=INDEX(参照, 行番号, [列番号], [領域番号])
・・・領域ってなんぞ?
と思うかもしれませんが、数式の第1引数の「参照」の部分に、
(範囲, 範囲) という感じで書けば、複数の範囲を1つめの領域、2つ目の領域…(もっと指定できる)というように指定でき、第4引数の領域番号部分を「1」「2」などに切り替えれば、それぞれ1つめの範囲から、2つ目の範囲から・・・と切り替えて結果を返してくれます。
尚、先の項目でも書いた通り、この書き方は第1引数がセル範囲などの参照じゃないと使えません。(配列では使えません)
※ちなみにOFFSET関数は結果として参照を返すので使えます。
(けどOFFSET関数は揮発性関数で重くなりがち。ご利用は計画的に。)
※第1引数の範囲を『(範囲➊,範囲➋…)』という様に、複数の範囲を
指定して領域番号でを切り替える場合、「範囲」同士がすべて
同じシート上にないと#VALUE!エラーになるので注意。
(式を入力しているシートと範囲で指定したシートが違ってもそれはOK)
例)
『=INDEX( (Sheet1!●,Sheet1!▲) ,1,1,1)』をSheet2に記入➡問題なし
『=INDEX( (Sheet1!●,Sheet2!▲) ,1,1,1)』をSheet2に記入➡#VALUE!
◇ INDEX関数の強み
➊基本的に表は、四角い範囲で扱われることが多いので
大抵のことはINDEXで処理できる。(無理やりな処理を含む)
❷配列が扱える(特に2019以前で重要)
※2019以前のVer.で結果を一気に出すにはCSE数式にする必要がある。
(Ctrl+Shift+Enter の同時押しで入力を確定する数式)
尚、ネストしている場合等には、INDEX(,0)で囲っても配列が死んだり
生きたり、INDEX(,0)の多段階ネストで配列が生きる時も死ぬ時もあり、
正直なところ、決定的な基準は上級者でも判明できていない。
(現状、実際に配列処理ができるかは、実機で確認するしかない状態)
❸参照として結果を返すことができる。(後述)
❹配列内のデータを行番号・列番号を数字で指定できる。
➡
総合的な結果として、おなじみMATCH関数を始めとした様々な各種関数との親和性がとても高く、いい感じに組み合わせやすい。
◇ 一般的ではないINDEX関数の使い方紹介
行や列の0指定や、領域番号での指定もまぁあまり一般的には使われてないけど、まぁそのあたりは一応MS公式でも書かれている内容なので。
以下のような使い方は、Excel関数上級者層(Twitter:現XのExcel関数界隈)には割と普通(は言い過ぎ?)に使われてたりはする。(どのレベルから上級者とするかとかそういう話はスルーでお願いします。別に中級者としてもどちらでも誰も気にしないのでそういうのは好きなように捉えてください)
■任意の複数行や複数列を指定し、特定行や列全体を取得する
新関数でいう所の「CHOOSECOLS」「CHOOSEROWS」みたいな。
■範囲を可変的に指定する
関数の結果として「参照」返せるというのはこういうこと。
この書き方は、『範囲を可変的に指定できるようにしたいけど、OFFSET関数やINDIRECT関数などの揮発性関数を使いたくない!』という時などに、ひっそり古の時代から一部のコア層が重宝していた技(?)。
なので、2019以前でも当然使えます。(スピルはしないけどね💦)
■数字の繰り返し配列を組合せて、自由自在にデータを抜き出す
■Excel2019以下のバージョン向けな使用例
・おなじみINDEX&MATCH
・2016以下用のMAXIFS
SUMPRODUCTでもいけるけどね。ちなみにMINIFSは少々めんどい。
(このやりかただと、条件に一致しない物が0になるので)
・結合セルの間をうめる
色んな方法があるけどね。1例として。
(実はLOOKUP関数が最強という説があるけど、それはまた機会があれば)
◇あとがき
何か知識が増えるような内容はありましたでしょうか?
昔からこういう感じのこねこね式を使っているので、割と何が一般的なのかそうでないのか、正直一般的な感覚がよくわからなかったりすることもよくありますが・・・関数BBAからの気持ちとしては、何か少しでも皆様の知識や感覚・楽しさの+になる事ができれば幸いです(*´∀`*)
去年11月・12月のLAMBDA系とMMULT(ついでにSUMPRODUCT)で力尽きたので、少なくとも今後はしばらくゆるゆる気味で行きたいと思ってますので、何卒よろしくお願いいたしますm(_ _)m
基本毎週のつもりだったけど、元々も心身共に不健康民なので、たまにお休みしちゃったりしてるし、どこかに定期で休み入れた方がいいのかな?とも思ったり。(木曜に5週目がある月は、5週目は休みにするとかそういうの)
さてさて来週は何にしましょうかねー?
INDEXとくればMATCH? 全然違うのでもいいけどなー。
もしリクエストとかあれば、お気軽にどうぞーヾ(・ω・)ノ