OfficeType

Excel~INDEX関数で範囲内の指定した行番号、列番号に対応した値を表示しよう~エクセル

エクセルで指定した範囲内において範囲の上から何行目、左から何列目かを指定し、指定された位置に入力された値を表示するINDEX関数について説明します。

配列バージョン

  • INDEX関数の配列バージョンの書式はINDEX(配列, 行番号, [列番号]) になります。
  • 配列は検索したい範囲を指定します。
  • 行番号は範囲の上から何行目を検索したいかを指定します。
  • [列番号]は範囲の左から何列目を検索したいかを指定します。

下の画像の例でセルG2に緑の表から"みかん"の単価を抽出して表示したい場合はセルG2に=INDEX(A2:D6,1,2)と入力しEnterを押します。

配列はセルA2からセルD6緑の表のデータ部分を指定するのでA2:D6になります。

行番号は"みかん"はセルA2からセルD6の範囲の上から3行目なので3を指定しています。

[列番号]は単価はセルA2からセルD6の範囲の2列目なので2を指定しています。

つまりセルG2に=INDEX(A2:D6,1,2)と入力しEnterを押すと商品"みかん"の単価30が表示されます。

MATCH関数との組み合わせ

上記の例では商品"みかん"の行と、単価の列を自分で指定しなければならないので、自動で行番号、列番号を指定したい場合はMATCH関数と組み合わせます。

下の画像の例でセルG2に、緑の表から"みかん"の単価を抽出したい場合はセルG2に=INDEX(A2:D6,MATCH(F2,A2:A6,0),MATCH(G1,A1:D1,0))と入力しEnterを押します。

INDEX関数の配列は緑の表のデータ部分を指定するのでA2:D6になります。

INDEX関数の行番号には、MATCH(F2,A2:A6,0)が入力されています。MATCHA関数はMATCH(検査値, 検査範囲, [照合の型])で検査値が検査範囲の上または左から何番目かを返します。[照合の型]は0を指定すると検査値と完全一致する値を検査範囲から検索します。MATCHA関数の検査値はF2なのでセルF2の"みかん"が検査値なります。MATCHA関数の検査範囲はA2:A6なのでセルA2からセルA6の商品名の範囲になります。MATCHA関数の[照合の型]は0なので完全一致で検索します。つまり、この式はセルA2からセルA6の範囲で"みかん"が上から何番目かを返します。"みかん"は範囲の上から3番目なので3がINDEX関数の行番号に使われます。

INDEX関数の[列番号]には、MATCH(G1,A1:D1,0)が入力されています。MATCHA関数の検査値はG1なのでセルG1の見出しの"単価"が検査値なります。MATCHA関数の検査範囲はA1:D1なのでセルA1からセルD1の緑の表の見出しの範囲になります。MATCHA関数の[照合の型]は0なので完全一致で検索します。つまり、この式はセルA1からセルD1の見出しの範囲で"単価"が左から何番目かを返します。"単価"は範囲の左から2番目なので2がINDEX関数の[列番号]に使われます。

つまりセルD2に=INDEX(A2:D6,MATCH(F2,A2:A6,0),MATCH(G1,A1:D1,0))と入力しEnterを押すと、この数式は=INDEX(A2:D6,3,2)を意味するのでセルA2からセルD6の範囲の上から3行目、左から2列目の値30が表示されます。

参照バージョン

  • INDEX関数の参照バージョンの書式はINDEX(参照,行番号,[列番号],[領域番号])になります。
  • 参照は検索したい範囲を指定します。参照範囲が非連続の時は範囲を()で囲み、()内で範囲をカンマ区切りで指定すれば左からが1,2,3・・・と[領域番号]が割り振られます。
  • 行番号は範囲の上から何行目を検索したいかを指定します。
  • [列番号]は範囲の左から何列目を検索したいかを指定します。
  • [領域番号]は参照で指定された範囲の中で、左から何番目の範囲で検索するかを指定します。

下の画像の例でセルD2に、セルA2,B2,C2の行番号,列番号,領域番号を参照して、対応するデータを抽出したい場合はセルD2に=INDEX((A5:B9,D5:E9),A2,B2,C2)と入力しEnterを押します。

参照はセルA5からセルB9のデータ1の範囲と、セルD5からセルE9のデータ2の範囲を指定するので(A5:B9,D5:E9)になります。

参照はセルA5からセルB9のデータ1の範囲と、セルD5からセルE9のデータ2の範囲を指定するので(A5:B9,D5:E9)になります。

行番号はセルA2の値を参照するのでA2になります。

列番号はセルB2の値を参照するのでB2になります。

領域番号はセルC2の値を参照するのでC2になります。

つまりセルD2に=INDEX((A5:B9,D5:E9),A2,B2,C2)と入力しEnterを押すと、領域番号は2なので参照の左から2番目の範囲D5:E9のデータ2の範囲を検索し、行番号は3で列番号は2なのでデータ2の範囲の上から3行目、左から2列目のデータは18なので18が表示されます。

セルA2,B2,C2のデータを書き換えればセルD2の抽出データの値も瞬時に変わります。例えば領域番号を1に書き換えれば範囲A5:B9のデータ1の範囲の上から3行目、左から2列目のデータは8なので8に変わります。