OFFSET関数の使い方をマスターしてスプレッドシートを自在に操る方法
最近、スプレッドシートでデータ分析を頼まれたんですが、見たことないような関数が出てきて…OFFSETっていったいどういうものなんでしょうか?
猫男
catman
OFFSET関数か。それはスプレッドシートでセルを動的に参照できる便利な関数だ。詳しく説明しよう。
スプレッドシートのOFFSET関数とは?
OFFSET関数は指定した座標から指定した行数・列数だけ離れたところにあるセルまたはセル範囲を返す関数です。
書き方は次の通りです。
=OFFSET(基準セル, 行オフセット, 列オフセット, [高さ], [幅])
- 基準セル:開始基準となるセル
- 行オフセット:基準から何行下に移動するか
- 列オフセット:基準から何列右に移動するか
- 高さ:オプションで参照するセル範囲の高さ
- 幅:オプションで参照するセル範囲の幅
この関数を使うことで、特定の条件下でのデータの取得や集計を容易に行うことができます。
何か具体的な例を見せてもらえるとありがたいんですけど…試してみたいし…。
猫男
OFFSET関数を実際に使ってみよう
ここでは、商品の在庫データから特定の商品ラインの変動を追跡してみましょう。
まずは次の表を作ろう
| A | B | C | D | |
|---|---|---|---|---|
| 1 | 商品 | 1月 | 2月 | 3月 |
| 2 | 商品A | 100 | 110 | 105 |
| 3 | 商品B | 150 | 145 | 160 |
| 4 | 商品C | 200 | 190 | 195 |
今回は、2月の「商品B」の在庫数をOFFSET関数で取得します。
OFFSET関数を使った在庫数の取得
まず試してみるのは、B列(1月)の「商品B」から右に1列移動した2月の在庫を取得する方法です。
次のように記入します。
=OFFSET(B3, 0, 1)
これを実行すると、次の結果になります。
145
うわぁ、本当に移動してデータを持って来てますね!すごい、これなら複数の時点にも応用できそうです。
猫男
範囲として使用する例
複数の時点のデータを参照したいときはOFFSETの高さや幅を指定することもできます。たとえば、商品Aから商品Cまでの3月の在庫合計を取得したいときです。
=SUM(OFFSET(C2, 0, 1, 3, 1))
この数式は、C列(2月)の商品Aから、D列(3月)まで3つの行を取得し、それを合計しています。
なるほど、範囲で使えるんですね。それにしても、この関数をどう活用すればいいのかますます興味が湧いてきました!
猫男
実務での使用例とOFFSETの可能性
OFFSET関数は、単なるデータの取得だけではありません。以下のような場面で活用されます。
- 動的な表の作成 – データが追加されても参照範囲を自動で調整
- 特定の条件に基づいた集計作業 – 比較データの自動取得
- 階層的な計算 – 例えば、特定の期間における売上推移の分析
OFFSET関数とGASで自動化も可能!
さらに、OFFSET関数をGoogle Apps Script(GAS)で活用することで、反復的なスプレッドシートの操作を自動化できます。
- 定例レポートの自動生成
- リアルタイムデータの更新
- 各データ範囲からの特定条件に基づくアクション
GASって聞いたことはあるけど、OFFSETと組み合わせたら、いよいよ仕事が楽になりそうですね。
猫男
catman
そうさ。OFFSET関数で得たデータを基に、GASでより多くのアクションを自動化してみるといい。きっと大きな改善が見られるはずだ。
OFFSETを活用した関数で業務改革が進んだら、次はGASの世界へ足を踏み入れましょう。スプレッドシートの「日常作業」が「自動作業」に変わる日が来ます。