[スプレッドシート] 同じ式をコピーせず動的に複数行・複数列へ適用させる(ARRAYFORMULA)

よく数十行に対して同じ式をコピーするのにセルの右下をつまんでドラッグ(またはコピー)する~という処理を行っていると、何か修正がある度にドラッグし直すという作業が発生することがある。

実際言うほど手間ではないのでチャチャっと作業してしまうが、このARRAYFORMULA関数を使うとドラッグ不要で複数行に式を適用出来るし修正も一つのセルで済むという使ってみるととても便利な関数がある。

作成したスプレッドシートの共有

使用例

セルB4の式


=ARRAYFORMULA(today()+(row(B4:B30)-(row()-1)-1))

… B4を起点・当日として以降の行に一日毎の日付を表示

セルC4の式


=ARRAYFORMULA(TEXT(B4:INDIRECT("B" & COUNTA(B4:B)+(row()-1)),"ddd"))

… 左隣のB列の日付を参照して曜日を表示する(B4から何行目まで値が入っているかを動的に取得している)

上記の例ではARRAYFORMULA関数を使ってB4・C4の式をその後のB30・C30まで適用させる処理をしています。 また、C4では以前の記事でも紹介した関数を使って数式内でのセル参照を変更することのできる「INDIRECT関数」も使っています。

参考

Share