更新日:、 作成日:

エクセル OFFSET 関数:基準のセルから上下左右に移動した位置のセルを取得する

はじめに

エクセルの OFFSET 関数の使い方を紹介します。

OFFSET 関数は基準のセルから上下左右に移動した位置のセルを取得します。

=OFFSET(A1,1,0) のようにして、セル「A1」から下方向へ 1 つずらしたセル「A2」を取得できます。

=OFFSET(A1,0,1) のようにして、セル「A1」から右方向へ 1 つずらしたセル「B1」を取得できます。

=OFFSET(A1,0,0,1) のようにして、セル「A1」から行数を 1 つ増やしたセルの範囲「A1」~「A2」を取得できます。

=OFFSET(A1,0,0,,1) のようにして、セル「A1」から列数を 1 つ増やしたセルの範囲「A1」~「B1」を取得できます。

名前の定義の参照や、別シートの参照もずらせます。

セルの範囲から指定した行と列の位置にあるセルを取得するには「INDEX 関数」を使用します。
ドロップダウンリストを切り替える方法は「ドロップダウンリストと連動して切り替える」をご覧ください。

OFFSET 関数の引数

OFFSET(基準, 行数, 列数)
基準のセルまたはセルの範囲から指定した行数列数を移動した先のセル参照を取得します。

OFFSET(基準, 行数, 列数, 高さ, )
移動先のセルの範囲の行数を高さで、列数をで指定できます。

引数「基準」基準となるセルやセルの範囲を指定します。配列不可
引数「行数」引数「基準」のセルを上下方向へ移動する数を指定します。
正の値:下方向へ
負の値:上方向へ
引数「列数」引数「基準」のセルを左右方向へ移動する数を指定します。
正の値:右方向へ
負の値:左方向へ
引数「高さ」省略できます。省略するとセルの範囲はそのままです。
移動後のセルの範囲の行数を指定します
引数「幅」省略できます。省略するとセルの範囲はそのままです。
移動後のセルの範囲の列数を指定します

配列不可:配列を指定できません。セルの範囲のみ指定できます。

使い方

OFFSET 関数の使い方を紹介します。

結果がセルの範囲のときは複数のセルに表示されます。これはスピルという機能によるものです。詳しくは「スピル、動的配列数式の使い方」をご覧ください。

セルを下に 1 つずらして参照する

セル「B3」から下に 1 つずらして、セル「B4」を参照します。

=OFFSET($B$3,B7,0)
10

セルを右に 1 つずらして参照する

セル「C2」から右に 1 つずらして、セル「D2」を参照します。

=OFFSET($C$2,0,B7)
11

セルを上下左右にそれぞれ 1 つずらして参照する

セル「C3」から上下左右にそれぞれ 1 つずらしたセルを参照します。

=OFFSET(C3,-1,0)
=OFFSET(C3,1,0)
=OFFSET(C3,0,-1)
=OFFSET(C3,0,1)
12

セルの範囲の行数を増やして参照する

セル「B2」から行数を 1 つ増やして、セルの範囲「B2」~「B3」を参照します。

=OFFSET($B$2,0,0,B6)

結果を右方向にコピーしています。

13

セルの範囲の列数を増やして参照する

セル「B2」から列数を 1 つ増やして、セルの範囲「B2」~「C2」を参照します。

=OFFSET($B$2,0,0,1,B7)
14

別シートを参照する

シート「Sheet2」に参照したいデータがあります。

15

シート「Sheet2」のセル「C3」から上下左右にそれぞれ 1 つずらしたセルを参照します。

=OFFSET(Sheet2!C3,-1,0)
=OFFSET(Sheet2!C3,1,0)
=OFFSET(Sheet2!C3,0,-1)
=OFFSET(Sheet2!C3,0,1)
16

別シートを参照するには シート名!セル名 のように入力します。セル名の前に シート名! を付けると、そのシートのセルを参照できます。

セル参照を入力するのと同じように別シートのセルをクリックして簡単に Sheet2!B2 のように入力できます。

詳しくは「別シートを参照(リンク)する」をご覧ください。

高度な使い方

OFFSET 関数と他の関数を組み合わせた使い方などを紹介します。

見出しの列を参照する

見出しを検索してその列の範囲をセル参照できます。それをドロップダウンリストに表示できます。

=OFFSET(B3,0,MATCH(B8,B2:C2,0)-1,COUNTA(OFFSET(B3:B6,0,MATCH(B8,B2:C2,0)-1)),1)

LET 関数」を使用できるバージョンなら次のように入力できます。

=LET(
検索,B8,
列数,XMATCH(検索,B2:C2)-1,
高さ,COUNTA(OFFSET(B3:B6,0,列数)),
OFFSET(B3,0,列数,高さ))
17
詳しくは「ドロップダウンリストと連動して切り替える」をご覧ください。

解説

引数「基準」にセル参照以外は入力できません。

引数「基準」に「INDIRECT 関数」や「INDEX 関数」など、セル参照を取得する関数は入力できます。

引数「行数」がプラスの値なら右に移動します。マイナスの値なら左に移動します。

引数「列数」がプラスの値なら下に移動します。マイナスの値なら上に移動します。

引数「行数」や引数「列数」が文字列のときはエラー #VALUE! になります。

引数「行数」と引数「列数」の結果のセルが存在しないときはエラー #REF! になります。

引数「高さ」を省略して引数「幅」を入力するには =OFFSET(基準,行数,列数,,高さ) のように入力します。

引数「高さ」と引数「幅」にマイナスの値を入力すると左側や上側への行数や列数になりますが、このような入力はしません。

引数「高さ」と引数「幅」が 0 や、結果のセルが存在しないときはエラー #REF! になります。

引数「高さ」や引数「幅」が文字列のときはエラー #VALUE! になります。