INDEXで値を取り出す
行と列の位置を指定して、範囲から値を返します。
「INDEXで値を取り出す」はCoddyKit上の無料Excel Formulas Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはExcel Formulas Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Excel Formulas Academyコースには全4レッスンが含まれています。
INDEX関数を知る
INDEX関数は、「範囲内の特定の位置にはどの値があるか」というシンプルな質問に答えます。セルの範囲と行番号を指定すると、その位置にある値を返します。
範囲を番号付きのリストだと考えてみてください。INDEXは「3番目の項目を返してください」と指定するようなものです。まだ名前で検索するわけではなく、位置を使って値を取り出すだけです。
そのため、値がどこにあるか分かっている場合、INDEXは値を取得するのに最適な関数です。
基本構文
INDEXの最も基本的な形式では、2つの情報を指定します。
- array — 調べるセルの範囲
- row_num — その範囲から返す行
=INDEX(B2:B6, 3)は、「範囲B2:B6から、3番目の位置にある値を返す」という意味です。B2:B6に名前が入っている場合は、3番目の名前が返されます。
行番号はシートの上端からではなく、範囲の内側で数えます。
=INDEX(B2:B6, 3)範囲内での数え方
最初はここで混乱しやすいものです。範囲が2行目から始まる場合、2行目のセルは2ではなく位置1です。
B2:B6にApple、Banana、Cherry、Date、Figが入っているとします。位置1はApple(セルB2)、位置2はBanana、位置3はCherryです。
したがって、=INDEX(B2:B6, 3)はCherryを返します。位置は、指定した範囲の先頭を基準にした相対的なものです。
=INDEX(B2:B6, 3)実例
A列に従業員名が並んでいて、そのうち4番目の名前を取得したいとします。データはA2:A10に入っています。
=INDEX(A2:A10, 4)と入力します。INDEXはA2から下方向に4つ分の位置を数え、A5の名前を返します。
名前そのものを入力していないことに注目してください。INDEXは値が何かではなく、どこにあるかだけを扱います。この位置を基準にする性質が、位置を検索してくれる関数と非常に相性がよい理由です。
=INDEX(A2:A10, 4)列番号を追加する
範囲が複数の列にまたがる場合、INDEXにはより完全な2次元形式もあります。
=INDEX(array, row_num, column_num)
これで、範囲内の行と列の両方を指定します。たとえば、=INDEX(A2:C10, 4, 2)は、その範囲の4行目、2列目にある値を返します。
どちらの番号も、指定した範囲の左上を起点に数えます。
=INDEX(A2:C10, 4, 2)表内のセルを選択する
A2:C5に小さな表があり、A列がRegion、B列がProduct、C列がSalesだとします。3番目のデータ行にあるSalesの値を取得したいとします。
Salesは3列目で、データの3行目は位置3です。そこで、=INDEX(A2:C5, 3, 3)と入力します。
INDEXはその範囲の3行目、3列目に移動し、そのSalesの値だけを返します。1つの数式で、行と列の交点を正確に指定できます。
=INDEX(A2:C5, 3, 3)行全体または列全体を返す
番号の一方を0に設定すると(多くの場合は省略しても)、INDEXは1つのセルではなく、行全体または列全体を返します。
=INDEX(A2:C5, 0, 2)は、その範囲の2列目全体を返します。最新のスプレッドシートでは、複数のセルにスピルします。
1つの値だけでなく、列全体を別の関数に渡したい場合に便利です。
=INDEX(A2:C5, 0, 2)単一列でのINDEX
範囲が1列だけの場合は、列の引数を完全に省略できます。INDEXは列1を前提にします。
したがって、C2:C20に価格が入っている場合、=INDEX(C2:C20, 7)は7番目の価格を返します。列番号は必要ありません。
同様に、E1:J1のように値が1行に並んでいる場合、=INDEX(E1:J1, 1, 4)はその行の左から4番目の値を返します。INDEXはデータの形状に合わせて柔軟に動作します。
=INDEX(C2:C20, 7)位置指定がハードコードより優れている理由
=A5と直接入力すればよいのではないか、と疑問に思うかもしれません。INDEXの強みは、位置に固定された数値ではなく、計算結果やセル参照を指定できることです。
たとえば、=INDEX(A2:A100, D1)は、D1に入っている行番号に対応する値を返します。D1を5に変更するとINDEXは5番目の項目を返し、20に変更すると20番目の項目を返します。
これにより、INDEXは単なる珍しい機能ではなく、動的な検索ツールになります。
=INDEX(A2:A100, D1)実践的な使用例
A2:A11にランキングがあり、F1のドロップダウンで1から10までの順位を選べるとします。
=INDEX(A2:A11, F1)と入力します。F1で1を選ぶと1位のプレイヤーが表示され、3を選ぶと3位のプレイヤーが表示されます。
数式は変わらず、入力だけが変わります。これは、これから作成する柔軟な検索の基本となる考え方です。
=INDEX(A2:A11, F1)範囲外の位置に注意する
存在しない位置をINDEXに指定すると、#REF!エラーが返されます。5個の項目からなる範囲で、位置6を指定すると失敗します。
たとえば、=INDEX(A2:A6, 9)は、5行の範囲に9番目の項目がないため、#REF!を返します。
位置番号は範囲の大きさ以内に収めてください。後でMATCHから位置を渡す場合、この問題はほとんど起きませんが、このエラーを認識しておくとよいでしょう。
=INDEX(A2:A6, 9)理解度チェック
INDEXが位置をどのように数えるか、理解度を確認しましょう。
まとめ:INDEXは位置で値を返す
INDEXは、範囲内の位置によって値を取得することを学びました。
- 1列または1行の場合は
=INDEX(array, row_num) - 2次元の範囲の場合は
=INDEX(array, row_num, column_num) - 位置は範囲の先頭から数えるため、最初のセルは位置1
- 位置には数値、セル参照、または計算結果を指定できるため、INDEXは動的に動作する
次は、位置を自動的に検索してくれる関数、MATCHについて学びます。
=INDEX(A2:A11, F1)よくある質問
「INDEXで値を取り出す」レッスンは無料ですか?
はい。「INDEXで値を取り出す」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Excel Formulas Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Excel Formulas Academyコースには全4レッスンが含まれています。
「INDEXで値を取り出す」で何を学びますか?
行と列の位置を指定して、範囲から値を返します。 ブラウザで直接実行するハンズオンコードでExcel Formulas Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Excel Formulas Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのExcel Formulas Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「INDEXで値を取り出す」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このExcel Formulas Academyレッスンでコードを書いて実行できますか?
はい。すべてのExcel Formulas Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。