Menu

INDEX関数の使い方: Excelで行と列を指定して値を取り出す

=INDEX(A2:C6,3,2)はA2:C6の3行目、2列目の値を返します。リストのn番目の項目、行全体や列全体、MATCHが見つけた位置の値を取り出すのに使います。

このページのシートはすべて実際に動きます。数値や数式を変えると再計算されます。

=INDEX(A2:C6,3,2)は、範囲A2:C6の3行目、2列目の値を返します。位置は範囲の左上のセルから数えるので、A2:C6の3行目はシートの4行目です。3や2を変えて、結果が動くのを確かめてください。

表の3行目、2列目
G2
ABCDEFG
1ProductCategoryPriceRowColumnResult
2AppleFruit$1.2032Vegetable
3PearFruit$1.50
4CarrotVegetable$0.80
5BreadBakery$2.40
6MilkDairy$1.10
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

E2が行番号、F2が列番号です。3行目はCarrot、2列目はCategoryなので、G2にはVegetableと表示されます。F2を1にすると商品名に、E2を6にすると#REF!になります。A2:C6には5行しかないからです。

INDEX関数の構文

=INDEX(array, row_num, [column_num])
  • array(配列): 値を読む範囲(または配列)。
  • row_num(行番号): その何行目か。1から数えます。0ならすべての行です。
  • column_num(列番号): 何列目か。1から数えます。範囲が1列か1行だけなら省略でき、0ならすべての列です。

1列の範囲なら、数は1つで足ります。=INDEX(A2:A6,4)は4番目の項目Breadです。2つ目の形式=INDEX((A2:C3,A5:C6),1,1,2)は複数の範囲のうちの1つから選びますが、使う場面はほとんどありません。

n番目の項目や最後の項目を取り出す

1列の範囲に対するINDEXは、「n番目の項目は何か」に答えます。入力済みのセルを数えるCOUNTAと組み合わせると、増えていくリストの最後の項目を返せます。

n番目と最後の項目
D3
ABCD
1ProductItem number2
2AppleNth itemPear
3PearLast itemMilk
4Carrot
5Bread
6Milk
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

D1が2なので、D2はPearを返します。COUNTAは5つの商品を数えるので、D3は5番目のMilkを返します。Milkを消すと、D3はBreadを返します。実際のファイルでは、新しい行も含まれるように両方をA2:A1000のような長い範囲に向けてください。COUNTAがこの方法で使えるのは、列の途中に空のセルがないときだけです。

0で行全体や列全体を返す

行番号の0は「すべての行」を意味するので、INDEX(B2:D5,0,2)は2列目全体です。SUM、AVERAGE、MAXの中で使えば、番号で選んだ列を集計できます。

1か月分の合計
G2
ABCDEFG
1RegionJanFebMarMonth numberTotal
2North4,2003,9004,800215,200
3South3,1003,6003,300
4East5,2004,7005,600
5West2,8003,0003,400
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

月番号2はFebで、G2はC2:C5を足して15,200になります。F2を3にすると3月です。行全体も同じで、=SUM(INDEX(B2:D5,3,0))はEastを合計します。Excel 2021とMicrosoft 365では、=INDEX(B2:D5,0,2)を単独で使うと4つの値がシートの下方向にスピルします。番号ではなく見出しで列を選ぶには、F2をMATCHに置き換えます。これがINDEXとMATCHの形です。

配列やスピルした結果に対するINDEX

INDEXはシート上の範囲だけでなく、数式が返す配列も読めます。並べ替え、抽出、重複の削除をしたリストを書き出さずに、その中から1つの項目を取り出せます。

いちばん高い商品と安い商品
E2
ABCDEF
1ProductCategoryPriceMost expensiveBread
2AppleFruit$1.20SecondPear
3PearFruit$1.50CheapestCarrot
4CarrotVegetable$0.80
5BreadBakery$2.40
6MilkDairy$1.10
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

SORTBYは5つの商品を価格順に並べて返し、INDEXが1番目(Bread)、2番目(Pear)、昇順の並べ替えからは1番目(Carrot)を取り出します。Milkの価格を3に変えると、Milkがいちばん高い商品になります。スピルしたリストがすでにシート上(たとえばH2)にあるなら、Excel 2021とMicrosoft 365では=INDEX(H2#,2)でその2番目の項目を取り出せます。

練習: 選んだ月を合計する

月別の売上
G2
ABCDEFG
1RegionJanFebMarMonth numberTotal
2North4,2003,9004,8001
3South3,1003,6003,300
4East5,2004,7005,600
5West2,8003,0003,400
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

やってみよう: G2で、INDEXを使ってF2の番号の月(1 = Jan、2 = Feb、3 = Mar)の合計を返してください。

よくある質問

ExcelのINDEX関数は何をしますか?

範囲の中の指定した位置の値を返します。=INDEX(A2:C6,3,2)はA2:C6の3行目、2列目の値を返します。位置はシートの1行目からではなく、範囲の左上のセルから数えます。

INDEXで列の最後の値を取り出すには?

入力済みのセルの数を行番号に使います:=INDEX(B2:B100,COUNTA(B2:B100))は、途中に空白のない列の最後の値を返します。空白があるなら、=LOOKUP(2,1/(B2:B100<>""),B2:B100)が空でない最後の値を返します。

INDEXが#REF!を返すのはなぜですか?

行番号か列番号が範囲より大きいからです。=INDEX(A2:A6,7)は5セルの範囲の7番目の項目を求めているので、#REF!を返します。

INDEXで列全体を返すには?

行番号に0を指定します:=INDEX(B2:D5,0,2)は2列目全体を返します。合計するなら=SUM(INDEX(B2:D5,0,2))のように関数で囲み、Excel 2021とMicrosoft 365ではそのままスピルさせることもできます。

Coddyのプログラミング言語のイラスト

Coddyでコードを学ぼう

始める