OFFSET関数の使い方|基準のセルから動いた先を参照する
※写真はイメージです
書き方はこれだけ
=OFFSET(基準のセル, 下へ何行, 右へ何列, [高さ], [幅])OFFSETは、基準のセルから「何行下・何列右」に動いたセル(または範囲)を返す関数です。行数を COUNTA で数えて入れると、データが増えても「いちばん下の行」「直近3か月」を自動で指せます。高さと幅を付ければ、範囲としてSUMやAVERAGEに渡せます。
この図の表をExcelファイルでダウンロード(問題と答えのシートつき)
5つの引数
| 引数 | 意味 | 例 |
|---|---|---|
| 基準 | 動き始めるセル | B1 |
| 行数 | 下へ動く行数(マイナスなら上へ) | 3 → 3行下 |
| 列数 | 右へ動く列数(マイナスなら左へ) | 0 → 同じ列 |
| 高さ(省略可) | 返す範囲の行数 | 3 → 3行分の範囲 |
| 幅(省略可) | 返す範囲の列数 | 1 → 1列 |
直近の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関数とは?
基準のセルから、指定した行数・列数だけ動いたセルや範囲を返す関数です。=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)に合わせています。図はこのサイトで作ったもので、表の会社名・商品名・人名は架空です。運営者情報