Excel関数 逆引き集 | 可変範囲を参照 → OFFSET

Excel VBA Excel
スポンサーリンク

概要

「データの行数が毎回変わる」「開始位置がズレる」「動く範囲を参照したい」
そんなときに使えるのが OFFSET(オフセット)関数です。

OFFSET は、
“基準セルから、上下左右に何マスずらした位置を起点に、指定サイズの範囲を返す”
という関数です。

動く範囲(可変範囲)を扱えるため、

  • グラフの自動更新
  • 最新データだけを参照
  • 行数が変わる表の合計
    など、実務でとても役立ちます。

OFFSET の基本

書式

=OFFSET(基準セル, 行方向のずれ, 列方向のずれ, [高さ], [幅])

意味をかみ砕くと:

  • 基準セル:スタート地点
  • 行方向のずれ:下に何行動くか(上はマイナス)
  • 列方向のずれ:右に何列動くか(左はマイナス)
  • 高さ:返す範囲の行数
  • :返す範囲の列数

OFFSET は「セル」ではなく「範囲」を返すのがポイントです。


基本例(1セルをずらして参照)

基準セル A1 から「1行下・2列右」のセルを参照

=OFFSET(A1, 1, 2)

A1 → 1行下 → A2
A2 → 2列右 → C2
結果:C2 を参照

高さ・幅を省略すると「1セルだけ」を返します。


可変範囲を作る(OFFSET の本領)

行数が変わる表の合計を自動化

A列にデータがあり、行数が毎回変わるとします。
B1 に「データ件数」が入っている場合:

=SUM(OFFSET(A1, 1, 0, B1, 1))

意味:

  • A1 を基準に
  • 1行下(A2)を起点に
  • 高さ=B1 行
  • 幅=1列
    → A2 から A(1+B1) までの範囲を SUM する

データが増えても減っても、B1 の件数に合わせて自動で範囲が変わります。


最新データだけを参照する

「最後の5件」だけを合計したい

A列にデータがあり、件数は COUNTA(A:A) で求められるとします。

=SUM(OFFSET(A1, COUNTA(A:A)-5+1, 0, 5, 1))

意味:

  • A1 から「データ件数−4」行下へ移動
  • そこから高さ5行の範囲を SUM
    → 最後の5件だけを合計

横方向の可変範囲

「右に増えていくデータ」を自動参照

A1 を基準に、右方向に増えるデータの「最初の3列」を参照:

=OFFSET(A1, 0, 0, 1, 3)

高さ1行、幅3列 → A1:C1 を返します。


OFFSET と MATCH を組み合わせて“動く開始位置”

「特定の値が見つかった行から、下に5行の範囲」を参照

A列に商品コード、B列に数量があるとします。
E2 の商品コードが見つかった行から、下5行の数量を合計:

=SUM(OFFSET(B1, MATCH(E2, A:A, 0), 0, 5, 1))
  • MATCH で「E2 が A列の何行目か」を取得
  • OFFSET の行方向にその値を入れる
    → 該当行から5行分の数量を SUM

OFFSET の注意点

計算が重くなることがある

OFFSET は「動的に範囲を返す」ため、
大量に使うと計算が遅くなることがあります。

参照が分かりにくくなる

OFFSET は“どこを参照しているか”が見えにくいので、
コメントや名前定義を使うと管理しやすくなります。

代替として INDEX を使うことも多い

OFFSET は便利ですが、
「非揮発性(再計算が軽い)」という理由で INDEX を使う人も多いです。


例題

問題1: A1 を基準に「2行下・1列右」のセルを参照する式を B1 に書いてください。

=OFFSET(A1, 2, 1)

問題2: A2:A100 にデータがあり、B1 に「データ件数」が入っています。A2 から B1 行分の合計を C1 に表示する式を書いてください。

=SUM(OFFSET(A1, 1, 0, B1, 1))

問題3: A列のデータの「最後の3件」だけを合計する式を D1 に書いてください(件数は COUNTA(A:A))。

=SUM(OFFSET(A1, COUNTA(A:A)-3+1, 0, 3, 1))

問題4: A列に商品コード、B列に数量があります。E2 の商品コードが見つかった行から下5行の数量を合計する式を F2 に書いてください。

=SUM(OFFSET(B1, MATCH(E2, A:A, 0), 0, 5, 1))

問題5: A1 を基準に、横方向に3列の範囲(A1:C1)を返す OFFSET を G1 に書いてください。

=OFFSET(A1, 0, 0, 1, 3)

まとめ

OFFSET は「基準セルからのずれ」で範囲を作る関数で、
可変範囲・最新データ・動く開始位置など、
“変化するデータ”に強いのが最大の特徴です。

  • OFFSET(基準, 行ずれ, 列ずれ, 高さ, 幅)
  • 行数が変わる表の合計
  • 最新データの抽出
  • MATCH と組み合わせて動的開始位置
  • 横方向の可変範囲
  • グラフの自動更新にも使える

このあたりを押さえておくと、
「データが増えても壊れない」「自動で追従する」
そんな“強いシート”が作れるようになります。

タイトルとURLをコピーしました