Excelでデータを扱っていると、「基準となるセルから数行下」「隣の列」など、位置をずらして別のセルを参照したい場面がよくあります。
たとえば、「A1を基準にして右隣のB1を参照したい」「リストの最後の行を自動で参照したい」といったケースです。
そんなときに活躍するのが OFFSET関数(オフセット関数)。
この関数を使うと、基準セルを中心に位置をずらして、動的にセルや範囲を指定できるようになります。
この記事では、OFFSET関数の基本構文から具体的な使い方、さらに実務で役立つ応用例までを丁寧に解説します。
目次
- ✅ OFFSET関数の基本構文と意味を理解しよう
- ・OFFSET関数の構文
- ・OFFSET関数の基本例
- ✅ OFFSET関数を使うメリット
- ・主なメリット
- ✅ OFFSET関数の基本的な使い方
- ・1. 位置をずらして値を取得する
- ・2. 範囲を動的に指定する
- ・3. データの増減に合わせて自動で範囲を拡張
- ✅ 実務で使えるOFFSET関数の応用例
- ・1. MATCH関数と組み合わせて動的参照
- ・2. 最新データを常に参照する
- ・3. グラフ範囲を自動更新する
- ・4. 条件によって異なる範囲を取得する
- ✅ OFFSET関数を使う際の注意点
- ・1. 揮発性関数である
- ・2. 範囲外を指定するとエラーが出る
- ・3. 数式が複雑になりやすい
- ✅ INDEX関数との違いを理解して使い分けよう
- ✅ OFFSET関数を実際に試してみよう
- ✅ まとめ:OFFSET関数を使いこなして動的な表を作ろう
✅ OFFSET関数の基本構文と意味を理解しよう
・OFFSET関数の構文
OFFSET関数は次のように記述します。
=OFFSET(参照, 行数, 列数, [高さ], [幅])
各引数の意味を整理すると以下の通りです。
引数 | 内容 | 補足 |
---|---|---|
参照 | 基準となるセルまたは範囲 | このセルを基点に位置をずらす |
行数 | 下方向(正の数)または上方向(負の数)にずらす行数 | 例:2 → 下に2行、-1 → 上に1行 |
列数 | 右方向(正の数)または左方向(負の数)にずらす列数 | 例:1 → 右に1列、-1 → 左に1列 |
高さ | (省略可)参照範囲の行数 | 範囲指定したい場合に使用 |
幅 | (省略可)参照範囲の列数 | 複数列を扱いたいときに使用 |
OFFSET関数の最大の特徴は、“基準セルをもとに相対的に参照先を変えられる” という点です。
・OFFSET関数の基本例
例:
=OFFSET(A1,2,1)
これは「A1を基準に、2行下・1列右」のセルを参照します。
つまり、B3セルの値を返します。
セルの位置を「行数」と「列数」で指定できるため、シート構成が変わっても柔軟に対応できます。
参考:【Excel】OFFSET関数をわかりやすく解説|位置をずらして参照する便利な関数
✅ OFFSET関数を使うメリット
OFFSET関数を使うと、数式の中で「動く参照範囲」を作ることができます。
つまり、データの追加・削除に合わせて自動的に範囲を広げたり狭めたりできるのです。
・主なメリット
- データ範囲を自動で調整できる
→ 行や列が追加されても、再指定せずに対応可能。 - グラフ範囲を自動更新できる
→ 新しいデータを追加してもグラフが自動で拡張。
参考:【Excel】2軸のグラフを作成する方法 - 関数の参照範囲を動的に変えられる
→ SUM・AVERAGEなどと組み合わせて柔軟な集計が可能。
参考:【Excel】引き算とSUM関数を組み合わせて使う方法|計算式と実例を徹底解説!
固定的な範囲指定(例:"A1:A10")では対応できない動的処理を、OFFSET関数は簡単に実現できます。
✅ OFFSET関数の基本的な使い方
・1. 位置をずらして値を取得する
まずは最もシンプルな使い方から。
=OFFSET(A1,3,2)
この式は、「A1を基準に3行下、2列右のセル」を参照します。
結果的にC4セルの値が表示されます。
こうした「相対的な位置指定」は、参照元が変化するような表(期間別データ、日付別売上など)で特に役立ちます。
参考:【Excel】OFFSET関数で「基準を可変」にする方法をわかりやすく解説
・2. 範囲を動的に指定する
OFFSETは単一セルだけでなく、複数セルの範囲も返すことができます。
=SUM(OFFSET(A1,0,0,5,1))
これは「A1を基準に5行×1列の範囲」を指定して合計します。
つまり、A1~A5の合計が返されます。
高さを変更すれば、集計範囲を簡単にコントロールできます。
・3. データの増減に合わせて自動で範囲を拡張
次の式を使えば、データが追加されても自動で範囲が拡大します。
=SUM(OFFSET(A1,0,0,COUNTA(A:A),1))
COUNTA関数でA列のデータ数を数え、その行数分だけ範囲を指定しています。
これにより、追加データを入力しても自動的に合計が更新される仕組みになります。
✅ 実務で使えるOFFSET関数の応用例
OFFSET関数の真価は「他の関数との組み合わせ」で発揮されます。
以下に代表的な実務活用例を紹介します。
・1. MATCH関数と組み合わせて動的参照
たとえば、A列に商品名、B列に価格がある表で、「みかん」の価格を取得したい場合:
=OFFSET(A1, MATCH("みかん", A2:A10, 0), 1)
MATCH関数で「みかん」の行番号を特定し、その行の右隣(B列)をOFFSETで参照します。
これにより、「検索値に対応したセルの値」を自動で取得できます。
参考:【Excel】IFNA関数で複数条件を処理する方法|VLOOKUP・INDEX/MATCH・IFとの組み合わせでExcel作業を効率化
・2. 最新データを常に参照する
売上データなどが日々追加される場合、「最後のセル」を自動取得する方法です。
=OFFSET(A1, COUNTA(A:A)-1, 0)
A列のデータ数をカウントし、最後のセルを動的に参照します。
この方法を使えば、最新の売上や在庫数を常に取得可能です。
・3. グラフ範囲を自動更新する
グラフ作成時にOFFSETを「名前の定義」で使うことで、データを追加してもグラフ範囲を自動更新できます。
手順:
- 「数式」タブ → 「名前の定義」をクリック
- 名前を「売上範囲」として登録
- 参照範囲に次を設定
=OFFSET(Sheet1!$B$2,0,0,COUNTA(Sheet1!$B:$B)-1,1)
- グラフのデータ範囲に「=Sheet1!売上範囲」を指定
これで、新しい行を追加してもグラフが自動で伸びます。
定期レポートの更新作業を効率化できる人気のテクニックです。
・4. 条件によって異なる範囲を取得する
IF関数と組み合わせると、条件ごとに異なる範囲を動的に切り替えられます。
=IF(C1="東", SUM(OFFSET(A1,0,0,5,1)), SUM(OFFSET(A1,5,0,5,1)))
C1の値が「東」の場合は上半分(A1:A5)、
それ以外の場合は下半分(A6:A10)を合計する例です。
条件分岐の自動化にもOFFSETは応用できます。
✅ OFFSET関数を使う際の注意点
・1. 揮発性関数である
OFFSETは「揮発性関数」と呼ばれ、シート内で何かを変更すると常に再計算されます。
複雑なブックや大量のデータに多用すると、Excelの動作が重くなる原因になります。
対策:
範囲が固定できる場合は、INDEX関数で代用するのがおすすめです。
INDEXは非揮発性で高速です。
・2. 範囲外を指定するとエラーが出る
行数や列数を過剰に指定すると「#REF!」エラーになります。
COUNTAなどでデータ数を動的に制御しておくと安全です。
・3. 数式が複雑になりやすい
OFFSETを多用すると、どこを参照しているか分かりにくくなります。
見やすさを保つために、「名前の定義」で論理的な名前をつけておくと良いでしょう。
✅ INDEX関数との違いを理解して使い分けよう
OFFSETとINDEXはよく似ていますが、内部動作は異なります。
比較項目 | OFFSET関数 | INDEX関数 |
---|---|---|
再計算 | 頻繁(揮発性) | 必要時のみ(非揮発性) |
範囲指定 | 高さ・幅を指定可能 | 単一セルや範囲可 |
主な用途 | 動的な範囲設定 | 固定範囲の参照 |
処理速度 | やや遅い | 速い |
OFFSETは「範囲を動かしたい」場面に、
INDEXは「セルを指定して値を取りたい」場面に使うのがベストです。
✅ OFFSET関数を実際に試してみよう
次の例でOFFSETの仕組みを体感してみましょう。
- A1に「100」、A2に「200」、A3に「300」を入力
- 任意のセルに次の式を入力
=OFFSET(A1,1,0)
→ 結果は「200」になります。
さらに、
=SUM(OFFSET(A1,0,0,3,1))
とすれば、A1~A3の合計「600」が返されます。
たった1つの関数で柔軟に範囲を変えられることが分かります。
✅ まとめ:OFFSET関数を使いこなして動的な表を作ろう
- OFFSET関数は、基準セルからの行・列移動で動的に範囲を指定できる関数。
- 構文は「=OFFSET(参照, 行数, 列数, [高さ], [幅])」。
- SUM、MATCH、IFなどと組み合わせると応用範囲が広がる。
- グラフや集計の自動化、最新データ参照に特に有効。
- 揮発性関数のため、多用時はパフォーマンスに注意。
OFFSET関数を理解すれば、Excelの「参照」の概念が一気に広がります。
動的なシート構成を作りたい人は、ぜひ日常業務の中で活用してみましょう。