【Excel・エクセル】OFFSET関数の使い方!範囲指定する関数?

抽出

OFFSET関数の使い方
もりの

参照するセル範囲を可変にできないかな?

やまの

それなら、OFFSET関数が便利かも。

今回のポイント
  • OFFSET関数は2通りの使い方がある
  • 値を抽出:=OFFSET(参照,行数,列数)
  • 範囲を指定:=OFFSET(参照,行数,列数,高さ,幅)
  • ほかの関数と組み合わせて使うことが多い

スポンサーリンク

【Excel・エクセル】値の取得と範囲指定、2つの意味を持つOFFSET関数

OFFSET関数はとっても特殊な関数で、「指定した位置の値を取得する」「セルの範囲指定をする」2つの用途で使えます。

もりのの笑った顔
もりの

僕の難しそうセンサーが反応してます!

やまのののんびりした顔
やまの

乗り越えよ。

それが一体、何に使えるのか?
まずはオフセット関数の基本的な使い方から、見ていきましょう!

ちなみに読み方は、「オフセット関数」です。

【Excel・エクセル】OFFSET関数の使い方

OFFSET関数の練習ファイルを用意したので、良ければ使ってくださいね。

※実際に操作できます。

いちいちスクロールするのは面倒なので、別タブか別ウィンドウで開くの推奨です!

OFFSET関数で、セルの値を取得する

OFFSET関数の書き方

=OFFSET(参照,行数,列数)

OFFSET次の位置にある値を抽出して
参照このセルから
行数縦方向にこのセル分(+なら下、-なら上)
列数横方向にこのセル分(+なら右、-なら左)

行数と列数はちょっとややこしいのですが、

  • 行数:1だと真下のセル、-1だと真上のセル
  • 列数:1だと右隣のセル、-1だと左隣のセル
  • 0だと参照から動かない

という感じで指定します。

行数と列数の考え方
行数と列数の考え方

例えばこの表のセルB4を参照にして、行数を2,列数を0にした場合。

B4から2セル分下にある、B6の値が抽出されます。

OFFSET関数でセルの値を抜き出した画像
OFFSET関数の使用例1

参照は同じで、今度は行数を-3、列数を0にした場合。

B4から3つ上、2つ右にあるセルD1の値が抽出されます。

OFFSET関数でセルの値を抜き出した画像
OFFSET関数の使用例2
もりの

INDEX関数に似てる?

やまの

確かに、INDEX関数と同じようにMATCH関数と組み合わせて使えるね。

OFFSET関数で、セルの範囲を指定する

OFFSET関数の書き方

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

OFFSETこの位置から、次の範囲を指定して
参照このセルから
行数縦方向にこのセル分(+なら下、-なら上)
列数横方向にこのセル分(+なら右、-なら左)の位置から
高さこのセル分下
このセル分右までの範囲

この使い方は直接使うのではなく、関数などで範囲指定する際に使います。

やまの

範囲指定する関数、例えばSUM関数とかCOUNTIF関数とかだね。

例えばSUM関数では、合計する範囲をOFFSET関数で指定できます。

=SUM(OFFSET(A1,1,2,5,1)では、A1から1つ下、2つ右のセルから5行1列分の範囲の合計ができるんです。

OFFSET関数で範囲指定した画像
OFFSET関数で範囲指定

【Excel・エクセル】OFFSET関数とVLOOKUP関数の組み合わせ

もりの

何となくOFFSET関数の使い方は分かったけど、いつ使えばいいの?

確かにこの関数単体ではあまり活用はできません。

OFFSET関数は、他の関数と組み合わせてこそ、真の力を発揮します!

やまの

ためしに、VLOOKUP関数と組み合わせて使ってみよう。

VLOOKUP関数の書き方

=VLOOKUP(検索値,範囲,列番号,検索方法)

検索値この値を基準にして
範囲この範囲の中の
列番号左から何番目にある値を抽出して
検索方法基本は0(FALSE)でOK
VLOOKUP関数の例
VLOOKUP関数の例

VLOOKUP関数で、型番から分類を確認できるようにしました。

が、毎月新製品を出しているので、毎月VLOOKUP関数の範囲を変えないといけません。

VLOOKUP関数とOFFSET関数の組み合わせ練習問題
VLOOKUPの範囲を可変にしたい
もりの

表に追加したら、自動で範囲を更新できないかな?

VLOOKUP関数の範囲にOFFSET関数を使って、範囲を可変にしたいと思います。

練習ファイルをお使いの方は、「応用」シートを開いてください。

ステップ1

OFFSETでセル範囲を指定します。

VLOOKUP関数の範囲を、OFFSET関数に置き換えましょう。

A1:C6を消して「OFFSET(」と入力します。

範囲をOFFSET関数に置き換えた画像
範囲をOFFSET関数に置き換える

ステップ2

参照にするセルは、VLOOKUP関数の範囲で一番左上に位置するセルにします。

今回はセルA1にして、特に動かす必要もないので、行数列数ともに0にしておきましょう。

つまり前半は「A1,0,0,」となります。

OFFSET関数の参照、行数、列数まで指定した画像
参照セルから動かさないので、「0,0」

ステップ3

次に高さですが、月が増えると行数が増え、高さが増していきます。

つまり高さは、表の行数分あればいいってことですよね。

やまの

そこで今回は、COUNTA関数で行数を出していくよ。

COUNTA関数は、何かしらが書いてあるセルの数を数える関数です。

図の場合「=COUNTA(A1:A5)」で、答えは4になります。

COUNTA関数の例
空白以外のセルを数える

というわけで、OFFSET関数の高さの部分に「COUNTA(」まで入力してください。

高さの部分にCOUNTA関数を使った画像
高さの部分にCOUNTA関数を使う

ステップ4

行数は表の列範囲のセルの数とイコールになるので、どこか列を指定すればOKです。

A列をクリックして、指定します。

COUNTA関数の出番はここまでなので、カッコを閉じましょう。

高さをCOUNTA関数で指定した画像
A列にあるセルの数が、そのまま高さになる

ステップ5

次の引数、幅に移るので「,」を打ちます。幅は、表の列数です。

今回の表ではデータが追加されても列数は変わらないので、数字で「4」と指定しておきます。

これでOFFSET関数も終わりなので、カッコを閉じてください。

幅に表の列数をそのまま入力した画像
幅は表の列数をそのまま入力

完成!

これで、範囲の高さが表の行数で変わるVLOOKUP関数の完成です!

範囲をOFFSETで指定したVLOOKUP関数の完成
範囲をOFFSETで指定したVLOOKUP関数の完成

新しく行を追加しても、ちゃんと読み取ってくれていますね!

行を追加してもしっかり動くOFFSET関数の画像
追加した分だけ範囲を広げてくれる
もりの

VLOOKUP関数の範囲を列選択すればいいのでは?

やまのののんびりした顔
やまの

ま、MATCH関数と組み合わせる方法もあるんよ。

OFFSET関数、使い方によってはかなり便利な関数ですね!
それでは、お疲れさまでした!

今回のおさらい
  • OFFSET関数は2通りの使い方がある
  • 値を抽出:=OFFSET(参照,行数,列数)
  • 範囲を指定:=OFFSET(参照,行数,列数,高さ,幅)
  • ほかの関数と組み合わせて使うことが多い

数式・関数,Excel抽出

Posted by morino