2025/7/19

セル参照関数の違い (INDEX, OFFSET, INDIRECT)【エクセル】

Thumbnail for セル参照関数の違い (INDEX, OFFSET, INDIRECT)【エクセル】

はじめに

エクセルには、番号やアドレスを指定し、該当するセル値を取得 / データを抜き出す関数 が複数存在します。 このセル参照関数の違いについてまとめました。

ここでは、以下について扱います:

  • 関数の使用例
  • 比較表
  • 使い分けの目安

関数の使用例

セル参照関数である INDEX, OFFSET, INDIRECT関数の それぞれを使った テーブルから値を取得する例 を示します。

ABCDEFGHIJKLMNO
110100
220200関数指定値1指定値2取得値
330300
440400⬜INDEX行番号:3列番号:2300
550500
6
7⬜OFFSET行の移動量:2列の移動量:1300
8
9
10⬜INDIRECT参照先:B3300

比較表

関数名主な用途
【入力値】
再計算頻度 ※1複数セル取得の可否参照シートの動的切り替え注意事項
INDEX範囲内の指定位置の値を取得
【範囲 + 行 / 列番号】
✅低い🟡一部可 ※2❌不可取得できるセルは、
指定範囲内に制限される。
OFFSET基準セルからの相対的な範囲を参照
【基準セル + 行 / 列数 + 高さ / 幅】
❌高い✅可-
INDIRECT文字列で指定したセルを参照
【アドレス(文字列)】
✅可他のセルの削除/移動に影響されないが、
シート名変更に弱い(他シート参照時)。

※1 OFFSET, INDIRECT関数は、再計算頻度が高いため、多用するとパフォーマンス低下を招く。使用回数が数百以上だと影響がでる可能性が高い。

※2 行 / 列数 = 0で、行 / 列全体の取得が可能。矩形状で複数セルを取得する場合は、動的数値配列 / CSE が必要。

使い分けの目安

セル参照関数の使い分けの目安は、 以下の通りです。

  • 基本 INDEX
  • 取得範囲を動的に変えたい、基準位置から左 / 上方向を参照したい ※ OFFSET
  • 動的に参照シートを切り替えたい INDIRECT

INDEXでは、指定範囲の左上を基準として行 / 列番号を指定するが、 その基準位置より左 / 上方向のセルは取得できない