Excel一覧 Excel操作・関数 OFFSET関数・範囲参照系 関数の使い方

【Excel】OFFSET関数の使い方をわかりやすく解説|基礎から応用まで

Excelでデータを扱っていると、「基準となるセルから数行下」「隣の列」など、位置をずらして別のセルを参照したい場面がよくあります。
たとえば、「A1を基準にして右隣のB1を参照したい」「リストの最後の行を自動で参照したい」といったケースです。

そんなときに活躍するのが 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関数を使うと、数式の中で「動く参照範囲」を作ることができます。
つまり、データの追加・削除に合わせて自動的に範囲を広げたり狭めたりできるのです。

・主なメリット

  1. データ範囲を自動で調整できる
    → 行や列が追加されても、再指定せずに対応可能。
  2. グラフ範囲を自動更新できる
    → 新しいデータを追加してもグラフが自動で拡張。
    参考:【Excel】2軸のグラフを作成する方法
  3. 関数の参照範囲を動的に変えられる
    → 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を「名前の定義」で使うことで、データを追加してもグラフ範囲を自動更新できます。

手順:

  1. 「数式」タブ → 「名前の定義」をクリック
  2. 名前を「売上範囲」として登録
  3. 参照範囲に次を設定
    =OFFSET(Sheet1!$B$2,0,0,COUNTA(Sheet1!$B:$B)-1,1)
  4. グラフのデータ範囲に「=Sheet1!売上範囲」を指定

これで、新しい行を追加してもグラフが自動で伸びます。
定期レポートの更新作業を効率化できる人気のテクニックです。

参考:【Excel】複合グラフを作成する方法


・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の仕組みを体感してみましょう。

  1. A1に「100」、A2に「200」、A3に「300」を入力
  2. 任意のセルに次の式を入力
    =OFFSET(A1,1,0)
    → 結果は「200」になります。

さらに、
=SUM(OFFSET(A1,0,0,3,1))
とすれば、A1~A3の合計「600」が返されます。

たった1つの関数で柔軟に範囲を変えられることが分かります。


✅ まとめ:OFFSET関数を使いこなして動的な表を作ろう

  • OFFSET関数は、基準セルからの行・列移動で動的に範囲を指定できる関数。
  • 構文は「=OFFSET(参照, 行数, 列数, [高さ], [幅])」。
  • SUM、MATCH、IFなどと組み合わせると応用範囲が広がる。
  • グラフや集計の自動化、最新データ参照に特に有効。
  • 揮発性関数のため、多用時はパフォーマンスに注意。

OFFSET関数を理解すれば、Excelの「参照」の概念が一気に広がります。
動的なシート構成を作りたい人は、ぜひ日常業務の中で活用してみましょう。

-Excel一覧, Excel操作・関数, OFFSET関数・範囲参照系, 関数の使い方