【Excel】OFFSET関数で参照範囲を可変させる

アイキャッチ

OFFSET関数は基準のセルからシフトした位置を返す関数です。単一セル、複数範囲どちらでも参照できます。参照した範囲の行/列数を変更することもできます。

サンプルで図説しているのでイメージが湧かない人はそこまで読み進めて下さい。

目次

OFFSET関数の使い方

=OFFSET(参照, 行数, 列数, [高さ], [])

…基準からシフトさせたい行数列数を指定します。シフト後の高さ(行数)、(列数)も変更できます。

参照

省略不可。シフトの基準になるセルを指定します。単一セル、セル範囲どちらでも可ですが、範囲は連続していないと#VALUE!を返します。

行数

省略不可。参照からシフトさせたい行数を指定します。正の値なら下方向へシフト、負の値なら上方向へシフトします。シート外(例:-1行目)を参照すると#REF!を返します。

列数

省略不可。参照からシフトさせたい列数を指定します。正の値なら右方向へシフト、負の値なら左方向へシフトします。シート外(例:-1列目)を参照すると#REF!を返します。

高さ

省略可。シフト後に変更したい行数を指定します。変更後の行数が1未満になる値を指定すると#REF!を返します。

省略可。シフト後に変更したい列数を指定します。変更後の列数が1未満になる値を指定すると#REF!を返します。

行数、列数は省略できませんが,を入力すれば数式は成立します。

  • =OFFSET(参照)
  • =OFFSET(参照,,)…この場合、行、列ともにシフト量が0になります。

OFFSET関数のサンプル

基本的な例をサンプルで説明します。

単純にOFFSET関数の挙動を表す例です。実用的な例は次項で解説します。

Sample
単一セルをシフトする
OFFSET関数サンプル画像。A2セルを2行1列オフセットさせ、B4セルが参照されている。

=OFFSET(A2,2,1)

基準のセルA2から21列シフトします。B4セルを参照し、2,000を返します。

Sample
SUM関数の参照範囲を変更する
OFFSET関数サンプル画像。高さを変更し、単一セル参照がセル範囲参照に変更されている。

=SUM(OFFSET(B2,0,0,3))

SUM関数の引数にOFFSET関数を使用しています。基準セルB2の高さを3に変更しています。B2:B4となるため=SUM(B2:B4)となり5,000を返します。

引数の幅と高さは「変更後の値」を指定します。「変更量」ではないので注意して下さい。

Sample
シフトして参照範囲を変更する
OFFSET関数サンプル画像。B2:B4参照が1列シフト、高さ6変更によりC2:C7参照になっている。

=SUM(OFFSET(B2:B4,0,1,6))

基準セルB2:B41列右にシフトし、高さを6に変更しています。C2:C7となるため4を返します。

  1. 基準となるセルを指定する…単一セル、セル範囲どちらでも可
  2. 基準セルをシフトさせる量を指定する
  3. シフト後の範囲を指定する(省略可)

OFFSET関数の主な使い道は他の関数の参照範囲を変更することです。次の項でCOUNTA関数MATCH関数を例に説明します。

COUNTA関数と組み合わせてプルダウンリストの参照範囲を可変させる

データの入力規則でプルダウンリストを作成する際、リストの元の値に空データがあるとリストにも空白が出力されます。

プルダウンリストの画像。元データの参照範囲に空データが含まれるため、リストにも空白が出力されてしまう。

OFFSET関数COUNTA関数を組み合わせることで、空白なしのリストを作成することができます。

プルダウンリストの画像。リストに空白がない状態。
Sample
OFFSET関数とCOUNTA関数でプルダウンリストの空白を無くす
入力規則ダイアログの画像。元の値欄にOFFSET関数とCOUNTA関数を組み合わせた数式が入力されている。

データの入力規則の設定タブで元の値欄に以下の式を入力して下さい。

=OFFSET(A2,,,COUNTA(A:A)-1)

COUNTA(A:A)氏名も含めてカウントするので4を返します。COUNTA(A:A)-1氏名をカウントしないための-1です。結果、=OFFSET(A2,,,3)となるので元の値A2:A4(A2から3行分の高さ=A2,A3,A4)を返します。

A列にデータを追加してみます。

プルダウンリストの画像。テーブルにデータが追加されており、プルダウンリストにも反映されている。

=OFFSET(A2,,,COUNTA(A:A)-1)

A列にデータが追加されています。COUNTA(A:A)5、5-1で4OFFSET(A2,,,4)となりA2:A5を返します。

この数式は名前の定義でも同じことができます。

SUM関数、MATCH関数と組み合わせて集計範囲を可変させる

Sample
MATCH関数で日付を検索、OFFSET関数で参照した範囲をSUM関数で集計

4名の売り上げを集計するサンプルです。12/1からB7セルで指定した日付までの売り上げを集計できます。

OFFSET関数とMATCH関数を組み合わせたサンプルの画像。テーブル内の日付をMATCH関数で検索し、OFFSET関数でSUM関数の範囲を可変させている。

=SUM(OFFSET(B2:B5,,,,MATCH(B7,B1:E1,0)))

  1. MATCH(B7,B1:E1,0)で日付12/3を検索しています。範囲内で3番目に見つかるので3を返します。
  2. OFFSET(B2:B5,,,,3)となるので列数が1から3になりB2:D5を返します。
  3. =SUM(B2:D5)となり21,000を返します。

作業用の行を1行追加して=COLUMN()を各列に入力すれば、列番号で検索することもできます。色々な場面で応用できます。また、COUNTIF関数などにも応用できます。

OFFSET関数は他の関数の参照範囲を可変させるのに便利

  • COUNTA関数と組み合わせてプルダウンリストや名前の定義の参照範囲を可変させる
  • MATCH関数と組み合わせて集計範囲を可変させる

ここでは2例しか挙げませんでしたが、その他にも組み合わせられる関数はたくさんあります。覚えれば集計表作成のスキルが格段に上がるので、勉強して使いこなせるようになってください。

よかったらシェアしてね!
  • URLをコピーしました!
目次