swatanabe’s diary

ラノベ創作、ゲーム、アニメ、仕事の話など。仕事はwebメディアの仕組み作り・アライアンスなど。

【スプレッドシート関数】真上のセルまで自動で参照する

やりたいこと

  • 関数を下にコピーした際、関数が入力された真上のセルまで自動で参照するように、参照範囲を切り替える

 

 

上は、ある会社のPVの予実管理シートのサンプル。確定した日=前日までのデータは実数で、それより先は前日までの平均を関数で入れていました。たとえば、8/3にこのシートを見ると、8/2までは確定したPV、8/3以降は8/1〜8/2の平均値が入っています。上のシートでいうと、黄色いセルが関数です。

上のシートは、シート閲覧日ごとのシート状況を分かりやすくするために、閲覧日ごとに列を用意しています。8/1に見たシート状況がB列、8/2がC列、8/3がD列……といった具合です。実際は当然ですが、1列です。

同社では、この関数の参照範囲を毎日、手打ちで修正していました。これを自動化するのが、今回の関数です。

 

関数

average(B$2:INDIRECT(ADDRESS(ROW()-1,COLUMN())))

これをB3セルに入力。あとは黄色いセルにひたすらコピペすればok。indirect関数は、参照まわりで色々な使い方ができて、本当に便利です。

address関数は、セル番地を返す関数。B3セルで【 ROW()-1、COLUMN() 】を指定すると、$B$2が返ります。ただ、あくまでセル番地を文字列で返すだけなので、indirect関数をかませて参照範囲に変換しています。

 

とりあえず、そんなところです。

眠いので、寝ます。