Excelの「OFFSET関数」

オントラックの財務モデリング担当 北川です。
今日は「OFFSET関数」について、ご紹介します。

OFFSET関数は、基準のセルから指定した数だけシフトしたセルを参照する関数です。
非常に分かりにくい関数ですが、知っておいていただきたい関数です。

OFFSET関数の書式は、OFFSET(基準、行数、列数、[高さ]、[幅])です。
基準、行数、列数は必ず指定します。高さ、幅はプラスの値のみで省略可能です。

高さ、幅については後ほどご紹介するとして、高さ、幅を使用しないOFFSET関数は、「基準」のセルから「行数」だけ上下方向にシフト、「列数」だけ左右方向にシフトしたセルを参照する関数です。
例えば、以下のB9セルには、=OFFSET(B3,1,2)の数式が入力されています。この時にはB3セルから1行下、2列右のD4セルを参照し、D4セルにある「12」の数字が表示されます。

なお、行数、列数にマイナスの値が入っている場合は、上方向、左方向へのシフトとなります。
以下のB9セルには=OFFSET(D7,-1,-2)の数式が入力されています。
この場合は、D7セルから1行上(-1行下)、2列左(-2列右)のB6セルを参照し、「4」の数字が表示されることになります。

では、次に高さ、幅についてご紹介しましょう。
高さ、幅を含めたOFFSET関数は、「基準」セルから「行数」「列数」だけシフトしたセルを含め「高さ」「幅」で指定したセル範囲を参照する関数です。
まずは、「行数」「列数」が0(ゼロ)の場合の例を見てみましょう。
B9セルには、=SUM(OFFSET(B3,0,0,3,2))という数式が入っています。
このOFFSET関数は、B3セルを含め下へ3行の「高さ」、右へ2列の「幅」のセル範囲(B3:C5)を指定しています。このOFFSET関数で返されるのはセル範囲となりますので、このままOFFSET関数だけだと、エラー(#VALUE!)となってしまいます。
ここでは、SUM関数を使うことで、OFFSET関数で指定したセル範囲の合計(27)を求めています。

念のために、行数、列数にも数字を入れた場合で見てみましょう。
B9セルには、=SUM(OFFSET(B3,2,1,3,2))という数式が入っています。
OFFSET関数では、B3セルを基準に2行下、1列右のセルであるC5セルを含め、下へ3行の「高さ」、右へ2列の「幅」のセル範囲(C5:D7)を指定してしており、SUM関数でその合計(69)を求めています。

ここまでご覧になってお分かりの通り、OFFSET関数はどのセルを参照しているのか、非常に分かりにくい関数です。
以下のようにOFFSET関数を使っているB9セルを選んでF2キーを押しても、参照元はB3セルしか指定されませんし、「参照元のトレース」を使っても同じです。

基準とするセルや参照したい期間を可変にしたい時などOFFSET関数を使わなければできないことがありますので、知っておくとできることの幅が広がります。
しかし、分かりにくい関数ではありますので、他の関数で代用できるときは他の関数を使った方が良いと思います。
また、使うとしても、「行数」と「列数」のみ、あるいは、「高さ」「幅」のみ(「行数」と「列数」は0(ゼロ))とした方が良いかと思います。

エクセルのスキルアップで働き方改革を!


次回の財務モデリング基礎講座は9月15日(日)です。お申し込みはこちらからどうぞ。

動画配信開始