目次
Googleスプレッドシートを使っていると、「このセルから少しズレた場所を取りたい」という場面が出てきます。
そんなときに使うのが OFFSET関数 です。
OFFSET関数とは?
基準となるセルから、指定した分だけズラした位置のセルや範囲を取得する関数です。
イメージとしては、
- 「ここを基準に」
- 「下に〇行、右に〇列」
- 「その位置を取り出す」
という動きです。
基本構文
=OFFSET(セル参照, オフセット行, オフセット列, [高さ], [幅])
各項目の意味
| 項目 | 内容 |
|---|---|
| セル参照 | スタート地点 |
| オフセット行 | 何行ズラすか(下がプラス / 上がマイナス) |
| オフセット列 | 何列ズラすか(右がプラス / 左がマイナス) |
| 高さ | 取得する行数(省略可) |
| 幅 | 取得する列数(省略可) |
まずはシンプルな例
例①:1つのセルを取得
OFFSET(A2,1,1)
意味:
- A2を基準に
- 1行下 → A3
- 1列右 → B3
→ B3の値を取得

範囲を取得する例(重要)
例②:2×2の範囲を取得
OFFSET(A2,3,4,2,2)
意味:
- A2を基準に
- 3行下 → A5
- 4列右 → E5
- そこから
- 高さ2行
- 幅2列
→ E5:F6 の範囲を取得

よくある使い方(実務で重要)
①「最新データを取得する」
例えば、データがどんどん下に追加される場合
OFFSET(A1, COUNTA(A:A)-1, 0)
→ 一番下のデータを取得

②「可変範囲を作る」
グラフや集計でよく使う
OFFSET(A1,0,0,COUNTA(A:A),1)
→ データ数に応じて範囲が自動で伸びる

注意点(ここが重要)
① #REF! エラー
- シートの外に出るとエラー
- 上に行きすぎ
- 左に行きすぎ
② 循環参照に注意
OFFSETは「動的」なので、
- 自分自身を参照すると
- 無限ループになり
→ #REF! エラー
③ 重くなりやすい
OFFSETは再計算が多い関数です。
大量データでは:
- 動作が重くなる
- シートが遅くなる
代替として覚えておくべき関数
OFFSETは便利ですが、最近はこれも重要です:
INDEXFILTERQUERY
特に INDEX は軽くて高速です。
OFFSETが向いている場面
- 基準からの相対位置を取りたい
- 範囲サイズを動的に変えたい
- グラフの自動更新
まとめ
OFFSET関数は一言でいうと:
「位置をズラしてデータを取る関数」
最低限これだけ覚えればOK
- 行は「縦移動」
- 列は「横移動」
- 高さと幅で「範囲指定」
次のステップ
OFFSETを理解したら、次はこれをやると一気にレベルが上がります:
- INDEXと組み合わせる
- AppSheetでの応用(仮想列)
- 自動集計・ダッシュボード作成

