ExcelのINDEX関数の使い方|行と列が交差する位置にあるセルを返す | office 365
INDEX(インデックス)関数は、指定された行と列が交差する位置にあるセルまたはセルの参照を返す関数です。
上図はINDEX関数を使った例です。A2:E11のセル範囲の中で「8」行目と「2」列目が交差するセルである「37」が返ります。
INDEX関数の書式は「配列形式」と「参照形式」の2種類あります。
隣接しない複数の範囲から行と列が交差するセルを求める場合は「参照形式」を使用します。
書式は以下の2つの形式があり、形式ごとに引数が異なります。
配列形式は最大で3つの引数があります。
1番目の引数は「配列」です。この引数は必須です。セル範囲または配列定数を指定します。
2番目の引数は「行番号」です。この引数は必須です。ただし第1引数「配列」が1行のときは省略可能です。
配列内の行の位置を数値で指定します。「0」を指定した場合、行全体を返します。
3番目の引数は「列番号」です。この引数は任意です。ただし第2引数「行番号」が省略されているときは必須です。
配列内の列の位置を数値で指定します。「0」を指定した場合、列全体を返します。
参照形式は最大で4つの引数があります。
1番目の引数は「参照」です。この引数は必須です。1つまたは複数のセル参照を指定します。
隣接していない複数の範囲を指定する場合、「()」(括弧)で囲って「,」(カンマ)で区切ります。
2番目の引数は「行番号」です。この引数は必須です。
範囲内の行の位置を数値で指定します。「0」を指定した場合、行全体を返します。
3番目の引数は「列番号」です。この引数は任意です。
範囲内の列の位置を数値で指定します。「0」を指定した場合、列全体を返します。
4番目の引数は「領域番号」です。この引数は任意です。省略すると第1引数「参照」で指定した範囲のうち1番目の範囲を使用します。
第1引数「参照」で隣接していない複数の範囲を指定した場合、どの範囲を使用するか数値で指定します。
INDEX関数の使用例をご紹介します。引数の使い方を実際にやってみて確認しましょう。
作業時間:5分
今回は1から50までの数値が入った表形式のデータを用意しました。I2、I3セルに入力した行と列の番号を元に交差する数値を左のテーブルから求めましょう。
INDEX関数の結果を表示したい【セル(例ではH5セル)】を選択し、『=INDEX(』と入力します。
対象のセル範囲を指定します。「=INDEX(」に続いて『A2:E11,』と入力します。マウスでセル範囲をドラッグで選択することもできます。
行番号を指定します。「=INDEX(A2:E11,」に続いて『I2,』と入力します。マウスでセルを選択することもできます。
列番号を指定します。「=INDEX(A2:E11,I2,」に続いて『I3)』と入力します。マウスでセルを選択することもできます。最後に【Enter】キーを押します。
INDEX関数の数式を入力したH5セルに「8」行目と「2」行目が交差するB9セルの結果が表示されました。
INDEX関数とMATCH関数を組み合わせてデータを抽出するやり方をご紹介しています。INDEX関数はMATCH関数と組み合わせることが多いのでぜひやり方を覚えましょう。
INDEX関数とSUMPRODUCT関数を組み合わせて複数条件に一致するデータを抽出するやり方をご紹介します。
SUMPRODUCT関数は範囲または配列の対応する要素の積を合計した結果を返します。書式は「=SUMPRODUCT(配列1,[配列2],…)」のように記述します。
上図では左側に商品ごとに「売上トップ店」「売上個数」「売上額」が用意されています。この表を元にして複数列の条件を満たす結果を右側に表示させます。
条件1として店舗が「渋谷」、条件2として売上個数が「200」を設定しました。INDEX関数とSUMPRODUCT関数を組み合わせることでこの2つをどちらも満たす検索結果(AND条件)を出力します。
検索結果を表示させたい【セル(例ではH2セル)】を選択し、『=INDEX(A1:D6,』と入力します。表データの見出しも含めて範囲を指定します。
SUMPRODUCT関数で複数の条件に満たす行数をINDEX関数に渡します。
「=INDEX(A1:D6,」に続いて『SUMPRODUCT((B1:B6=F2)*(C1:C6=G2)*ROW(B1:B6)),』と入力します。
SUMPRODUCT関数の中にさらにROW関数を使用しています。ROW関数は参照の行番号を返します。書式は「=ROW([参照])」のように記述します。
SUMPRODUCT関数で条件1「B1:B6=F2」と条件2「C1:C6=G2」を指定し、2つの条件に一致した行数をROW関数で抽出しています。
INDEX関数の列番号を指定します。検索結果に商品名を表示させたい場合、左側の表データでは1列目に商品名があります。
「=INDEX(A1:D6,SUMPRODUCT((B1:B6=F2)*(C1:C6=G2)*ROW(B1:B6)),」に続いて『1)』と入力し、Enterを押します。
H2セルに条件1と条件2を同時に満たす「クッキー」が表示されました。複数の関数が入れ子(ネスト)していますが、1つずつの役割を確認しましょう。
INDEX関数で「#REF」エラーになる原因は指定している行番号もしくは列番号が配列(参照)の範囲を超えているからです。
上図の例では、A2からE11のセル範囲を配列に指定していますが、行番号として指定している「11」が範囲外になっているため#REFエラーになっています。
#REFエラーを解消するためには行番号が範囲内になるように修正しましょう。
ExcelのADDRESS関数の使い方|セル参照の文字列を求める
ExcelのCHOOSE関数の使い方|インデックスに対応した値を取り出す
ExcelのCOLUMN関数の使い方|指定したセルの列番号を求める
ExcelのFILTER関数の使い方|必要なデータを抽出する
ExcelのGETPIVOTDATA関数の使い方|ピボットテーブルのデータ取得
ExcelのHLOOKUP関数の使い方|指定の行と同じ列にある値を返す
ExcelのHYPERLINK関数の使い方|ハイパーリンクを作成する
ExcelのINDIRECT関数の使い方|セルや他のシートを参照する
ExcelのLOOKUP関数の使い方|1行または1列の範囲から検索する
ExcelでOFFSET関数の使い方|指定した位置のセル範囲を参照する
ExcelのROWS関数の使い方|参照、または配列に含まれる行数を返す
View Comments
Everything is very open with a very clear explanation of the
challenges. It was definitely informative.
Your site is extremely helpful. Many thanks for sharing!
I visited several blogs however the audio feature for audio songs current at this
website is really wonderful.
Does your website have a contact page? I'm having problems locating it but, I'd
like to send you an e-mail. I've got some creative
ideas for your blog you might be interested in hearing.
Either way, great site and I look forward to seeing it develop over time.
Hi there! I know this is kinda off topic but I was wondering which blog platform are you using for this site?
I'm getting sick and tired of Wordpress because I've had issues with hackers and I'm looking at options for another platform.
I would be awesome if you could point me in the direction of
a good platform.
It's going to be end of mine day, except before ending I am reading this
great paragraph to improve my know-how.
Howdy would you mind sharing which blog platform you're using?
I'm planning to start my own blog soon but I'm having a hard time making a
decision between BlogEngine/Wordpress/B2evolution and Drupal.
The reason I ask is because your design seems different then most blogs and I'm looking for something completely unique.
P.S Apologies for getting off-topic but I had to ask!
After going over a handful of the articles on your website, I really like your technique of blogging.
I saved it to my bookmark site list and will be checking back in the near
future. Please visit my website too and let me know your opinion.
Pretty! This was a really wonderful article.
Thank you for supplying this info.
It's actually a cool and helpful piece of info. I am happy that you just shared this useful information with us.
Please stay us informed like this. Thank you for sharing.
Everyone loves it when people get together and share views.
Great site, stick with it!