数式を利用してセルの範囲を取得する手順を紹介します。
概要
書式
OFFSET([基準のセル番地], [行方向のシフト], [列方向のシフト], [取り出す行数], [取り出す列数])
例
下記の場合、C4セルから3行下、1列右の、D7セルから5行、1列の範囲を取り出します。"D7:D12"となります。
OFFSET(C4,3,1,5,1)
準備
下図の表を作成します。F2セルに、C2~C4セルの合計を、F3セルに、C5~C7セルの合計を、F4セルに、C8~C10セルの合計を、F5セルに、C11~C13セルの合計を表示することにします。
単純な方法
それぞれのセルにそれぞれ別の計算式を入力して対応する方法があります。
セル | 値 |
F2 | =SUM(C2:C4) |
F3 | =SUM(C5:C7) |
F4 | =SUM(C8:C10) |
F5 | =SUM(C11:C13) |
数式を利用してセルの範囲を取得する方法
上記の方法でも正しい値を計算できますが、下図が増えた場合、すべてのセルに別の数式を入力する必要があり、面倒です。SUM関数に与えるセルの範囲を数式で指定することで、手間を減らせます。
セル | 値 |
F2 | =SUM(OFFSET($C$2,3*0,0,3,1)) |
F3 | =SUM(OFFSET($C$2,3*1,0,3,1)) |
F4 | =SUM(OFFSET($C$2,3*2,0,3,1)) |
F5 | =SUM(OFFSET($C$2,3*3,0,3,1)) |
セルのオフセット範囲を数式で決定する
上記の方法でも正しく動作しますが、OFFSET関数の第二引数が "3*0", "3*1", "3*2", "3*3" となっており、セルごとに値が違っています。この部分を数式で記述できるようにします。ROW()関数を利用すると、数式が入力されている自身の行数を取得できるので、ROW()関数をOFFSETの第二引数に利用します。
セル | 値 |
F2 | =SUM(OFFSET($C$2,3*(ROW()-2),0,3,1)) |
F3 | =SUM(OFFSET($C$2,3*(ROW()-2),0,3,1)) |
F4 | =SUM(OFFSET($C$2,3*(ROW()-2),0,3,1)) |
F5 | =SUM(OFFSET($C$2,3*(ROW()-2),0,3,1)) |
同じ数式で、3要素ごとに合計を計算できます。
著者
iPentec.com の代表。ハードウェア、サーバー投資、管理などを担当。
Office 365やデータベースの記事なども担当。
最終更新日: 2024-01-20
作成日: 2016-04-18