ピアのパソコン学習ガイド
メニュー
Excel関数

OFFSET関数の使い方|基準のセルから動いた先を参照する

ピアのパソコン学習ガイド 編集部2026年11月9日 更新

※写真はイメージです

書き方はこれだけ

=OFFSET(基準のセル, 下へ何行, 右へ何列, [高さ], [幅])

OFFSETは、基準のセルから「何行下・何列右」に動いたセル(または範囲)を返す関数です。行数を COUNTA で数えて入れると、データが増えても「いちばん下の行」「直近3か月」を自動で指せます。高さと幅を付ければ、範囲としてSUMやAVERAGEに渡せます。

B1 から「データの数−1」行下=いちばん下の行 D2 fx =OFFSET(B1,COUNTA(B:B)-1,0) A B C D 1 2 3 4 5 月 売上 4月 452 5月 518 6月 487 7月 560 最新の月 560
B1から下へ「データの数−1」行動くと、いちばん下の7月になります。8月を足すと、自動で8月を指します。

この図の表をExcelファイルでダウンロード(問題と答えのシートつき)

5つの引数

引数意味例
基準動き始めるセルB1
行数下へ動く行数(マイナスなら上へ)3 → 3行下
列数右へ動く列数(マイナスなら左へ)0 → 同じ列
高さ(省略可)返す範囲の行数3 → 3行分の範囲
幅(省略可)返す範囲の列数1 → 1列

直近の3か月を合計する

いちばん下から3行分の範囲を作って合計(高さ3・幅1) D2 fx =SUM(OFFSET(B1,COUNTA(B:B)-3,0,3,1)) A B C D 1 2 3 4 5 月 売上 4月 452 5月 518 6月 487 7月 560 直近3か月の合計 1,565
高さを3にすると「3行分の範囲」になるので、SUM で囲みます。AVERAGEにすれば直近3か月の平均です。

データが増えると伸びるプルダウン

プルダウンの元の値に =OFFSET($A$2,0,0,COUNTA($A:$A)-1,1) と入れると、A列に候補を書き足すたびにプルダウンの候補も増えます(A1は見出し)。

INDEX関数で書く方法(おすすめ)

ひとつ先に言っておくと、OFFSETはシートのどこかが変わるたびに計算し直すので、たくさん使うとファイルが重くなります。いちばん下の値を出すだけなら =INDEX(B:B,COUNTA(B:B)) でも同じ結果で、こっちのほうが軽いです。

うまくいかないとき

1#REF! になる

動いた先がシートの外(1行目より上・A列より左)になっています。

直し方行数・列数の計算を見直します。COUNTAが見出しも数えていないか確かめます。

21行ずれる

COUNTAは見出しも数えるので、基準を見出しのセルにするか、−1 するかで合わせる必要があります。

直し方基準がB1(見出し)なら COUNTA(B:B)-1、基準がB2(データの先頭)なら COUNTA(B:B)-2 です。

3途中に空白があると合わない

COUNTAは空白を数えないので、空白の分だけ短くなります。

直し方データの列に空白を作らないか、最後の行を探す別の方法(LOOKUP など)を使います。

サンプルファイルで試す

黄色のセルにOFFSETの式を入れて、「答え」のシートと比べてください。

offset.xlsx をダウンロード(無料・登録なし)

よくある質問

OFFSET関数とは?

基準のセルから、指定した行数・列数だけ動いたセルや範囲を返す関数です。=OFFSET(基準,行数,列数,高さ,幅) と書きます。

いちばん下の値を取り出すには?

=OFFSET(B1,COUNTA(B:B)-1,0) です。B1が見出しのときの式です。INDEX関数で =INDEX(B:B,COUNTA(B:B)) とも書けます。

直近3か月の合計を出すには?

=SUM(OFFSET(B1,COUNTA(B:B)-3,0,3,1)) です。高さを3にして3行分の範囲を作ります。

OFFSETが重いのはなぜ?

シートのどこかが変わるたびに計算し直す関数だからです。たくさん使うときはINDEX関数に置き換えます。

一緒に覚えたい関数・操作

このページについて

操作の説明は Microsoft 365 の日本語版Excel(Windows)に合わせています。図はこのサイトで作ったもので、表の会社名・商品名・人名は架空です。運営者情報