ラベルラベル

検索・参照中級

OFFSET関数を見て理解する

基準となるセル・範囲を選び、行と列の移動量、必要な高さと幅を指定して参照先を動かす関数です。

3つのポイント

  1. 基準のセル・範囲を選ぶ
  2. 行・列の移動量を指定する
  3. 高さ・幅で参照先の範囲を決める
例題

表の参照範囲を行・列方向へ移動する

サンプル数式

  • 基準となる範囲
  • 行の移動量
  • 列の移動量
  • 高さ(行数)
  • 幅(列数)

いまの結果:

2行 × 2列
計算結果
結果セル:H2スピル範囲:H2:I3

先頭行:50 | 60

入力・条件:5項目
  • 基準となる範囲B2:C3(2行 × 2列)先頭行:10 | 20
  • 行の移動量F2:1
  • 列の移動量F3:1
  • 高さ(行数)F4:2
  • 幅(列数)F5:2
この結果になる理由

B2:C3から1行・1列移動し、C3:D4(2行×2列)を参照します。 結果はH2からスピル表示します。

サンプルデータ

範囲や移動量を変えてみよう

※ Excel と Google スプレッドシートで結果や挙動が異なる場合、Excel の仕様を基準にしています。

「表の参照範囲を行・列方向へ移動する」のサンプルデータ。引数番号は正式引数と教材要素の対応、小さな角丸数字は処理順を表します。
ABCDEFGHI
1 商品1月2月 移動量・寸法 結果 
2 102030  5060
3 405060  8090
4 708090    
5 100110120    
基準となる範囲行の移動量列の移動量高さ(行数)幅(列数)結果セル
①・②・③・④・⑤ 正式引数 / 教材要素1–6 処理の流れ

F2、F3、F4、F5に値を入力すると、結果と処理順が変わります。

5つの引数

色付きの丸数字は、サンプル数式と引数ガイドで同じ引数を示しています。表にも同じ番号があれば、その引数で指定しているセルを示します。

  1. B2:C3表のセル: B2:C3

    B2:D5から範囲を選び、その左上を行・列移動の起点にします。

  2. F2表のセル: F2

    正なら下、負なら上へ参照位置を移します。

  3. F3表のセル: F3

    正なら右、負なら左へ参照位置を移します。

  4. F4表のセル: F4

    返す範囲の高さを指定します。負の値はExcel 2021実測に従って扱います。

  5. F5表のセル: F5

    返す範囲の幅を指定します。負の値はExcel 2021実測に従って扱います。

この数式を日本語にすると

B2:C3を基準に下へ1行・右へ1列ずらし、高さ2行・幅2列のC3:D4を参照します。H2から2行×2列に結果が広がります。

この説明は、最初に表示されているサンプルデータをもとにしています。入力値を変更しても説明文は変わりません。

処理の流れ

手順1〜6を順番に確認しましょう。表内の小さな角丸数字は、対応する手順を示します。

  1. 基準範囲を確認する

    B2:C3

    B2:C3を基準にします。この範囲の左上が移動の起点です。

  2. 行方向の移動量を確認する

    F2

    行の移動量:1を指定します。

  3. 列方向の移動量を確認する

    F3

    列の移動量:1を指定します。

  4. 高さを確認する

    F4

    高さ(行数):2を指定します。

  5. 幅を確認する

    F5

    幅(列数):2を指定します。

  6. 移動先と結果を確認する

    C3:D4H2

    B2:C3から1行・1列移動し、C3:D4(2行×2列)を参照します。 結果はH2からスピル表示します。

対応アプリ

  • Excel
  • Google スプレッドシート

関数自体が対応するアプリです。教材例の数式や再計算が、両アプリで同じように動くことを保証するものではありません。

この例の注意点

  • OFFSETはセル番地の文字列を返すADDRESSとは異なり、移動先の参照そのものを返します。動的配列では複数セルがスピル表示されます。
  • rowsは下が正・上が負、colsは右が正・左が負です。高さ・幅を省略すると基準範囲と同じ寸法を引き継ぎます。
  • Excel 2021実測では負の高さ・幅が逆方向の範囲を表し、小数の寸法にも特有の挙動があります。Google スプレッドシートとは異なることがあります。
  • 参照先がExcelワークシート範囲外の場合は#REF!、スピル先が塞がれている場合は#スピル!です。教材表示範囲を超えることとは異なります。
  • この教材はExcel 2021の実測187件を根拠とし、入れ子の数式、外部ブック、非表示シート、全関数による参照消費は対象外です。

一般構文

対応:Excel / Google スプレッドシート ・ 構文:構文は同じ

  • Excel 2021では負の高さ・幅が逆方向へ範囲を広げる実測例があり、Sheetsでは#VALUE!になるケースがあります。1未満の小数の範囲寸法にも差があります。
  • 高さ・幅が0のときExcel 2021は#REF!、Sheetsは#VALUE!となる実測例があります。全角数値文字列や空文字列も異なる場合があります。
  • 空白参照を直接表示・スピルすると、Excelは0、Sheetsは空欄として見える実測例があります。
  • スピル先に既存値があるとExcelでは#スピル!、Sheetsでは#REF!を観測しました。妨害を除去すると両方で復旧しました。

Excel

=OFFSET(reference, rows, cols, [height], [width])

[] は省略できる引数です。

省略時

height
省略すると基準範囲の高さを引き継ぎます。
width
省略すると基準範囲の幅を引き継ぎます。

Google スプレッドシート

=OFFSET(reference, rows, cols, [height], [width])

[] は省略できる引数です。

省略時

height
省略すると基準範囲の高さを引き継ぎます。
width
省略すると基準範囲の幅を引き継ぎます。
公式資料・確認範囲

公式資料

実機確認

  • Excel 2021 / Google スプレッドシート省略時の扱い・計算結果・入力の扱い・エラー・配列展開を確認済み

この教材で扱わない範囲

  • OFFSETは参照を返す関数です。この教材ではA1形式の単一矩形参照と直接値表示を体験します。SUMやROWSなど他関数とのネスト式は表中の例示にとどめ、数式パーサーで評価しません。
  • Excelワークシートの有効範囲と教材で描画できる小さな表は別です。境界外の参照エラーと表示上限を区別します。

次に学ぶ関数

INDIRECT

OFFSETで基準から参照範囲を移動したら、INDIRECTで文字列から参照先を切り替える仕組みを学びます。

次に学ぶ