前回「Excel グラフの表示区間をスクロールバーで変更」記事で、データ範囲の一部区間をグラフ表示し、その区間をスクロールバーを使って変更する方法をご紹介しました。
グラフの表示区間を簡単に変更する方法のひとつだったわけですが、少々分かりづらかった「OFFSET」関数の使い方について補足しておきます。

詳細は Microsoftのサポートページ「OFFSET 関数」をご参照いただくとして、簡単な例をまず示しておきます。

A1~A10セルに 1~10の数値が入力されており、C1セルに「=OFFSET(A1,5,0)」と入力すると「6」と返されます。(下図)

 

「OFFSET」関数の書式は以下のようになります:
  =OFFSET(参照, 行数, 列数, [高さ], [幅])

「OFFSET」関数は、第1引数「参照」のセルから第2引数「行数」と第3引数「列数」だけ移動したセルを始点として第4引数「高さ」(行)と第5引数「幅」(列)のセル参照を返します。

この例では、第1引数 A1セルを起点とし、第2引数 5(行)、第3引数 0(列)だけ移動したセル(A6)を参照して返します。
オプションの第4、第5引数を省略しているので、参照しているセル範囲と同じ行数・列数を指定したことと同じになります。

もうひとつ例を示します。
A1~B10セル範囲に数値とテキストが入力されており、D1セルに「=OFFSET(A1,5,0,3,2)」と入力すると下図のように返されます。

 

先の例と似ていますが、第4引数「高さ」(行)と第5引数「幅」(列)を省略せずに与えています。
A6~B8セル範囲(3行×2列)の値を返しています。

なお、OFFSET関数でも同じシート内だけでなく、別のシートから参照することもできます。
例えば別のシート内のセルに「=OFFSET(Sheet3!A1,5,0,3,2)」とすれば、Sheet3 シートにあるデータを参照します。

これを利用して、長い表データのうち一区間を取り出すことをやってみます。
前回同様のデータを使ってみます。(下図)

 

この表データがあるシートとは別のシート「Sheet4」でその一区間を参照します。
Sheet4シートのA2セルに「=OFFSET(Sheet2!$A$2,$C$1,0,100,2)」と入力すると、下図のように元データの先頭から 100行分のデータが参照されます。

 

C1セルが元データの先頭から数えた場所を表わし、これの数値を変更すればそこから 100行×2列分のデータが参照されます。
この参照されたセル範囲をグラフ化すれば下図のようになります。

 

この C1セルをスクロールバーの「リンクするセル」に設定すれば、スクロールバーでその値を変更することができます。

いかがでしょう。
「OFFSET」関数の用途としては「可変リストの参照」があげられます(これ以外にもあります)。
つまり、参照する表データのサイズが変わりうる場合や、元の表データのうち一部のデータを参照し、そのサイズが変わりうる場合などにとても便利に使えます。