【OFFSET関数】本当の理解を目指して

本記事は、OFFSET関数について解説します。

本記事を読むことで、OFFSET関数の使い方を理解し、実務的に役立てていただければ幸いです。

関数の紹介

機能

OFFSET関数は、指定したセルから特定の行数・列数分、移動した先のセルまたは範囲を返す関数です。

ザックリ言うと、可変できる関数といことです。

名前の由来


SET(固定)OFFにする ⇒ 可変 

と推察しています。

主に、役立つシーン

主に、次のようなシーンで役立ちます。

  1. 【条件付き書式】セル範囲を可変しながら、条件付き書式を適用できる
  2. 【参照範囲】セル範囲を可変しながら、セル値の取得やグラフを作成することができる
  3. 【計算】セル範囲を可変しながら、合計値や平均値を計算できる

OFFSET(基準, 行数, 列数, [高さ], [幅])

OFFSET 関数 – Microsoft サポート

基準セルに対して、行数列数を指定して、セルを可変に動かします

基準となるセルを分かりやすく説明すると、スタート地点となるセルです。

[]は省略可能です。
Microsoft社の公式リファレンスは[高さ][幅]のみ省略可能としていますが、行数と列数も省略できます。こちらは後述します。

  1. 参照:セル範囲の起点となるセルとなる参照セル。本記事では、スタート地点と呼びます
    • どの地点から動かせばいいかをExcel関数に教えます
  2. 行数:スタート地点からの行方向への移動数の値はに移動し、負の値はに移動します
    • スタートセルから、どのぐらい動かすかをExcel関数に教えます
  3. 列数:スタート地点からの列方向への移動数の値はに移動し、負の値はに移動します
    • スタートセルから、どのぐらい動かすかをExcel関数に教えます
  4. 高さ:返されるセル範囲の行数。省略時は1
    • 複数行を取得できます。1であれば、1行分取得するという意味です。
  5. 幅:返されるセル範囲の列数。省略時は1
    • 複数列を取得できます。1であれば、1列分取得するという意味です。

例題

以下は、OFFSET関数を使って、「➋ 【参照範囲】セル範囲を可変しながら、セル値の取得やグラフを作成することができる」の例です。

まずは基本です。

なお、➋のグラフにOFFSET関数をグラフに活用した例は、本記事では取り上げません。

今後改めて、紹介します。

引数「行数」「列数」の指定パターン一覧
下図の見方

「番号付き矢印」と「矢印番号」が対応し、「番号付き矢印」の方向へ移動させるための数式が「矢印番号」の行に記述されています。

B3セルをスタート地点として、「行数」「列数」に動かしています。

「行数」「列数」をどのように設定すると、どうセルが動いているかを確認してください。

  • 「行数」であれば、の数を指定すると方向へ、の数を指定すると方向へシフト
  • 「列数」であれば、の数を指定すると方向へ、の数を指定すると方向へシフト


では、それぞれのOFFSET関数に関して、解説します。

正であれば「進む」負であれば「戻る」と覚えましょう。

関数式説明結果
=OFFSET($B$3,,,,)B3のセルをスタートとした位置から移動しませんB3
=OFFSET($B$3,1,,,)B3のセルをスタートとして1行下に移動しますC3
=OFFSET($B$3,-1,,,)B3のセルをスタートとして1行上に移動しますA3
=OFFSET($B$3,,1,,)B3のセルをスタ―トとして1列右に移動しますC3
=OFFSET($B$3,,-1,,)B3のセルをスタートとして1列左に移動しますA3
=OFFSET($B$3,1,1,,)B3のセルをスタートとして1行下、1列右に移動しますC4
=OFFSET($B$3,-1,-1,,)B3のセルをスタートとして1行上、1列左に移動しますA2

上記関数式から分かるのは、公式リファレンスと異なり、「行数」「列数」ともに省略可能ということです。
つまり、第1引数「基準」以外は省略可能となっているわけです、

引数「高さ」「幅」
引数「高さ」

次の例では、「$B$3」から始まる4行分の値を返しています。
この範囲は、スタートとなるセル(ここでは「$B$3」)を含めた4つのセルから値を取得します。

引数「幅」

次の例では、「$B$3」から始まる2列分の値を返しています。
この範囲は、スタートとなるセル(ここでは「$B$3」)を含めた2つのセルから値を取得します。

引数「高さ」「幅」の覚え方
=OFFSET(基準, 行数, 列数, [高さ], [幅]) 

「高さ」が行数、「幅」が列数であることが分かります。

[高さ], [幅])の引数も、「行数」「列数」の引数と同様に、行, 列の順になっていることが分かります。

ゆえに、[高さ], [幅])の引数の覚え方は、第2引数と第3引数の「行数」「列数」と同様の順で、
「行」「列」の順と覚えてください。

最後に

OFFSET関数は、シートのセルや範囲を移動して参照することができる便利な関数です。

スタート地点のセルから、どれだけ(行数/列数)を動かし、どの程度(高さ/幅)値を取得するか

「高さ」が行数、「幅」が列数を、表現したものでした。

次の3点に関しては、「主に、役立つシーン」は、今後改めて紹介できればと思います。

  1. 【条件付き書式】セル範囲を可変しながら、条件付き書式を適用できる
  2. 【参照範囲】セル範囲を可変しながら、セル値の取得やグラフを作成することができる
  3. 【計算】セル範囲を可変しながら、合計値や平均値を計算できる