※本ページにはプロモーション(広告)が含まれています
基準セルから指定した行・列の数だけずらした位置のセル範囲を返すExcel関数です。動的範囲の構築によく使われるボラタイル関数です。
詳しい解説
OFFSET関数は、起点となるセル(基準)から指定した行数・列数だけ移動した位置にあるセル、または可変サイズの範囲を返すExcel関数です。構文は `=OFFSET(基準, 行数, 列数, [高さ], [幅])` で、5つの引数のうち高さと幅は省略可能(既定で基準と同じサイズ)です。
代表的な活用例は「動的範囲」の作成です。たとえばデータが追加されるたびに集計範囲を自動的に伸ばしたい場合、`=OFFSET($A$1,0,0,COUNTA($A:$A),1)` のようにCOUNTA関数と組み合わせて、入力済みセル数に応じて範囲を伸縮させられます。これにより、ピボットテーブルやグラフのデータソースに名前付き範囲として登録しておけば、データを追加したあとに範囲を更新する手間が省けます。
注意点はパフォーマンスです。OFFSET関数はボラタイル関数で、ブック内に変更があるたびに常に再計算されます。INDIRECT関数と同様、大量に使うと動作が重くなるため、Microsoft 365で利用できる場合はテーブル機能や動的配列関数(FILTER・SORTなど)への置き換えがおすすめです。また、参照する行数・列数が範囲外になると #REF! エラーになります。
売上データが日々追加される表で、グラフのデータ範囲を自動更新したい場合、名前の管理から `=OFFSET(Sheet1!$A$1,0,0,COUNTA(Sheet1!$A:$A),1)` を「売上範囲」という名前で登録すると、データ追加だけでグラフが伸びます。テーブル機能を使えるならそちらが第一候補です。
別の呼び方
OFFSET
可変範囲
minto.tech スマホ(Android/iPhone)・PC(Mac/Windows)の便利情報をお届け! 月間アクセス160万PV!スマートフォン、タブレット、パソコン、地デジに関する素朴な疑問や、困ったこと、ノウハウ、コツなどが満載のお助け記事サイトはこちら!